Next.jsReact作品集博客

quietfolio-template — Next.js 作品集模板

作者 salahu01

基于 Next.js App Router 的开发者作品集模板,包含项目案例、博客与可打印简历页,采用静态导出,无后端依赖。

看看你的网站会是什么样

浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。

3 个预览视图
桌面端首页1 / 3
桌面端截图首屏预览

由服务器浏览器实际访问页面后截取。

全部页面与视图 3

截图用于了解视觉与布局,交互效果请以实际项目为准。

采集于 2026-10-02查看来源

值得关注的模板亮点

从已有项目资料中,快速了解它的特点。

01

单页首页整合简介、可筛选项目、经历、技术栈与 GitHub 活跃度

02

提供 /work/[slug] 案例研究、/blog 博客与 /resume 可打印简历页

03

案例与文章以 JSON 维护,含内容校验脚本检查链接、图片与 slug

04

内置逐页元数据、canonical、Open Graph、Twitter 卡片与多种 JSON-LD 结构化数据

05

输出 sitemap.xml、robots.txt、RSS、llms.txt、security.txt 与 web manifest

06

支持静态导出到 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 与重定向,图片也不会在请求时优化。

Next.js作品集博客

适合你的项目吗?

适用场景

  • 个人开发者搭建带案例研究与博客的作品集站点
  • 需要可打印简历页并与站点数据保持一致的求职场景
  • 希望以静态方式发布到 GitHub Pages 且不运行服务端的项目
  • 需要较完整 SEO 与结构化数据输出的个人站点

适合人群

  • 熟悉 Next.js 与 JSON 内容维护方式的开发者
  • 需要作品集、案例研究与博客三部分内容的个人站点
  • 可接受静态托管限制、愿意自行核对第三方素材许可的使用者

上手与定制指南

结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。

  1. 1

    克隆仓库后执行 npm install 与 npm run dev,Node 版本由 .nvmrc 指定

  2. 2

    在 lib/data.ts 填写个人信息、项目与经历,并设置 profile.githubUser

  3. 3

    替换 public/img 下的头像与项目图片,可用脚本重新生成占位资源

  4. 4

    复制 .env.example 并设置 NEXT_PUBLIC_SITE_URL,未设置时构建会输出警告

  5. 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 原文

the animated pixel-art banner comes from `python3 scripts/make_banner.py` (needs Pillow)

README 原文
https://github.com/salahu01/quietfolio-template/blob/main/LICENSEhttps://github.com/salahu01/quietfolio-template/blob/main/README.md

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).
反馈内容错误

看看同类模板

对比同技术栈与用途的模板,找到更适合的视觉与内容结构。