单页首页整合简介、可筛选项目、经历、技术栈与 GitHub 活跃度
quietfolio-template — Next.js 作品集模板
作者 salahu01
基于 Next.js App Router 的开发者作品集模板,包含项目案例、博客与可打印简历页,采用静态导出,无后端依赖。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 3
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
提供 /work/[slug] 案例研究、/blog 博客与 /resume 可打印简历页
案例与文章以 JSON 维护,含内容校验脚本检查链接、图片与 slug
内置逐页元数据、canonical、Open Graph、Twitter 卡片与多种 JSON-LD 结构化数据
输出 sitemap.xml、robots.txt、RSS、llms.txt、security.txt 与 web manifest
支持静态导出到 GitHub Pages,也可部署到 Node 托管环境
模板详细介绍
quietfolio-template 是一个面向开发者的作品集模板,仓库采用 MIT 许可。技术栈为 Next.js(App Router)、Tailwind CSS 与 Framer Motion,构建产物完全静态,不依赖后端服务。
内容层面,首页为单页结构,包含个人简介、可筛选的项目列表、工作经历、技术栈与 GitHub 活跃度图;此外提供 /work/[slug] 案例研究页、/blog 博客列表与文章页,以及由数据生成的 /resume 可打印简历页。案例研究与博客文章以 JSON 文件维护(content/work.json、content/blog.json),支持 h2、h3、p、ul、ol、quote、code、img、table 等块类型与粗体、斜体、行内代码、链接等行内语法。
站点配置集中在 lib/data.ts 与 lib/site.ts,环境变量控制规范 URL、子路径、是否禁止索引以及是否静态导出。模板附带内容校验脚本,用于检查失效链接、缺失图片与重复 slug;同时提供生成品牌资源、示例图片、横幅与简历 PDF 的脚本。
部署方面,可连接 Netlify、Vercel 或其他 Node 主机,也可通过 deploy:pages 脚本以静态导出方式发布到 GitHub Pages。静态托管下不存在自定义响应头、CSP 与重定向,图片也不会在请求时优化。
适合你的项目吗?
适用场景
- 个人开发者搭建带案例研究与博客的作品集站点
- 需要可打印简历页并与站点数据保持一致的求职场景
- 希望以静态方式发布到 GitHub Pages 且不运行服务端的项目
- 需要较完整 SEO 与结构化数据输出的个人站点
适合人群
- 熟悉 Next.js 与 JSON 内容维护方式的开发者
- 需要作品集、案例研究与博客三部分内容的个人站点
- 可接受静态托管限制、愿意自行核对第三方素材许可的使用者
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
克隆仓库后执行 npm install 与 npm run dev,Node 版本由 .nvmrc 指定
- 2
在 lib/data.ts 填写个人信息、项目与经历,并设置 profile.githubUser
- 3
替换 public/img 下的头像与项目图片,可用脚本重新生成占位资源
- 4
复制 .env.example 并设置 NEXT_PUBLIC_SITE_URL,未设置时构建会输出警告
- 5
部署到 GitHub Pages 使用 npm run deploy:pages,静态托管下无自定义头、CSP 与重定向
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- GitHub 活跃度图依赖第三方 GitHub API;若更换第三方来源,需同步修改 next.config.ts 中的 CSP 配置。
- 静态托管(如 GitHub Pages)下不支持自定义响应头、CSP 与重定向,图片也不会在请求时优化。
- 演示构建会设置 NEXT_PUBLIC_NOINDEX=1 使站点不可被索引;若该 Pages 站点为正式站点,需在部署脚本中移除该变量。
- 生成像素横幅需本地安装 Python 的 Pillow 库。
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据
Permission is hereby granted, free of charge
许可证原文
If you change third-party origins (for example the GitHub activity API), update the CSP in `next.config.ts`.
README 原文
Custom headers/CSP and redirects don't exist on a static host, and images aren't optimized at request time
README 原文
Demo builds set `NEXT_PUBLIC_NOINDEX=1` so a mirror never competes with your canonical site in search.
README 原文
https://github.com/salahu01/quietfolio-template/blob/main/LICENSEhttps://github.com/salahu01/quietfolio-template/blob/main/README.mdthe animated pixel-art banner comes from `python3 scripts/make_banner.py` (needs Pillow)
README 原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-02。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 85 / 100
- 技术栈
- Next.js · React
- 网站类型
- 作品集 · 博客
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-10-02
- 截图检查日期
- 2026-10-02
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 Next.js。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
已完成服务器许可规则与 AI 来源核对;未经过人工编辑审核。
查看当时使用的来源资料
SHA-256: b4e6702c81794f2d6c51d953ffcbadc3b3e097c32f2b4721e7b34e39be71e690
2026-10-02T16:38:13.593Z
来源文件 / 仓库# quietfolio A minimal, fast, accessible and SEO-first developer portfolio template with projects, case studies and a blog. Built with **Next.js (App Router)**, **Tailwind CSS v4** and **Framer Motion**. Fully static, no backend. **Live demo:** https://salahu01.github.io/quietfolio-template/ (sample content) <p align="center"> <img src="docs/cover.jpg" alt="quietfolio: a minimal, fast, open-source portfolio template" width="100%"> </p> ## Use it Click **Use this template** on GitHub, or: ```bash git clone https://github.com/salahu01/quietfolio my-site && cd my-site nvm use # Node 22 (.nvmrc) npm install npm run dev # http://localhost:3000 ``` ## Make it yours (checklist) 1. **You** — edit `lib/data.ts`: name, role, bio, links, projects, experience, tech stack. Set `profile.githubUser` for the activity graph. 2. **Writing** — edit `content/work.json` (case studies) and `content/blog.json` (posts). Run `npm run validate` to catch broken links, missing images and duplicate slugs. 3. **Images** — replace `public/img/avatar.jpeg` and `public/img/projects/*.jpg`. `python3 scripts/make_sample_assets.py` regenerates neutral placeholders. 4. **Brand assets** — `python3 scripts/make_brand_assets.py "Your Name" "Your Role" "yourdomain.com"` regenerates the favicon, Apple icon and social image from your avatar. 5. **SEO** — set `NEXT_PUBLIC_SITE_URL` (see `.env.example`) and review `lib/site.ts` (description, keywords, Twitter handle). 6. **Resume** — `/resume` is a printable page generated from your data. Regenerate the PDF with `npm run build && npm start`, then `npm run resume`. 7. **Banner** — the animated pixel-art banner comes from `python3 scripts/make_banner.py` (needs Pillow). Edit the script to change the scene. ## Features - Single-page home (about, projects with filters, experience, tech stack, GitHub activity) plus `/work/[slug]` case studies, `/blog` and `/resume`. - Animated pixel-art banner, pixel cursor trail + focus reticle, dark/light theme (no flash), ⌘K command palette. - **SEO / AEO / GEO:** per-page metadata and canonical URLs, Open Graph + Twitter cards (per-post generated images), JSON-LD (`Person`, `WebSite`, `ProfilePage`, `TechArticle`, `BlogPosting`, `Blog`, `BreadcrumbList`), `sitemap.xml`, `robots.txt`, RSS (`/feed.xml`), `llms.txt` and `llms-full.txt`, `security.txt`, web manifest. - **Accessibility:** skip link, landmarks, AA contrast, visible focus, `prefers-reduced-motion` (static banner, no cursor effects), keyboard-operable palette and filters. - **Hardening:** security headers and a strict CSP in production, no third-party scripts, `X-Powered-By` removed, JSON-LD escaped. | Script | Purpose | | --- | --- | | `npm run dev` | Dev server | | `npm run build` / `npm start` | Production build / serve | | `npm run lint` · `npm run typecheck` | ESLint · TypeScript | | `npm run validate` | Validates `content/*.json`, links and assets | | `npm run check` | Everything above, in order (what CI runs) | | `npm run deploy:pages` | Static export → `gh-pages` branch (GitHub Pages) | | `npm run resume` | Regenerate `public/resume.pdf` | ## Content format Blocks: `h2`, `h3`, `p`, `ul`, `ol`, `quote`, `code`, `img`, `table`. Inline: `**bold**`, `*italic*`, `` `code` ``, `[text](url)`. See the sample posts in `content/blog.json`. ## Configuration Copy `.env.example`: | Variable | Default | Purpose | | --- | --- | --- | | `NEXT_PUBLIC_SITE_URL` | `https://example.com` | Canonical URL (origin + optional sub-path) for metadata, sitemap, feeds, JSON-LD. A warning is printed at build time if unset. | | `NEXT_PUBLIC_BASE_PATH` | *(empty)* | Sub-path when served from a folder, e.g. `/my-repo`. Set automatically by `deploy:pages`. | | `NEXT_PUBLIC_NOINDEX` | *(unset)* | `1` makes the build non-indexable (for demos/mirrors). | | `STATIC_EXPORT` | *(unset)* | `1` builds a static `out/` folder instead of a Node server build. | ## Deploy **Netlify / Vercel / any Node host** — connect the repo and set `NEXT_PUBLIC_SITE_URL` to your domain. Security headers, the CSP and the `/work` redirect apply in this mode (`netlify.toml` is included). **GitHub Pages (static export)** — no server, no Actions required: ```bash npm run deploy:pages ``` This builds with `STATIC_EXPORT=1`, `NEXT_PUBLIC_BASE_PATH=/<repo>` and publishes `out/` to the `gh-pages` branch. Then in the repo go to **Settings → Pages → Deploy from a branch → `gh-pages` / root**. It is served at `https://<user>.github.io/<repo>/` and does not affect your other Pages sites. Notes: - Custom headers/CSP and redirects don't exist on a static host, and images aren't optimized at request time (keep images web-sized; `scripts/optimize_images.py` shrinks project covers). - Demo builds set `NEXT_PUBLIC_NOINDEX=1` so a mirror never competes with your canonical site in search. Remove that variable in `scripts/deploy_pages.sh` if the Pages site is your real one. After deploying, verify `/sitemap.xml`, `/robots.txt`, `/llms.txt`, `/feed.xml`, and test a page in the [Rich Results Test](https://search.google.com/test/rich-results). Submit the sitemap in Google Search Console and Bing Webmaster Tools. If you change third-party origins (for example the GitHub activity API), update the CSP in `next.config.ts`. ## Project structure ``` app/ routes, metadata files (sitemap, robots, manifest, OG images, feeds) components/ UI (Hero, Projects, Navbar, CursorFx, JSON-LD, article renderer…) content/ case studies + blog posts (JSON) lib/ data, site config, SEO helpers, content loader public/img/ images scripts/ asset generators, content validator, deploy script ``` ## Contributing See [CONTRIBUTING.md](CONTRIBUTING.md), [SECURITY.md](SECURITY.md) and [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md). ## License [MIT](LICENSE).
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

tailwind-nextjs-starter-blog
tailwind-nextjs-starter-blog 是一个面向个人技术博客的 Next.js 与 Tailwind CSS 启动模板,其 v2 版本基于 App Router 与 React Server Comp…
Next.js · 博客

react-resume-template
A personal resume website template built with React.js, Typescript, Next.js, and styled with Tailwind css
Next.js · 作品集

Nextjs-tailwindcss-blog-template
⭐Build SEO optimized personal blog website with Next.js, Tailwind CSS and Contentlayer. If you want to learn t…
Next.js · 博客

Next-js-Blog-Boilerplate
Next-js-Blog-Boilerplate 是一套面向个人与技术博客的启动代码,基于 Next.js 12 与 Tailwind CSS 3 构建,同时集成了 TypeScript、ESLint、Prettier …
Next.js · 博客

nextjs-blog-theme
nextjs-blog-theme 是 Netlify 团队维护的一个博客启动模板,基于 Next.js 15(Pages Router)和 Tailwind CSS 4.x 构建,设计由 Bejamas 机构完成。
Next.js · 博客

blog
🚀 My personal blog made with Tailwind CSS and NextJS. Template from Timlrx. Feel free to fork, follow and use…
Next.js · 博客
