使用 Next.js、TypeScript React、Tailwind CSS 和 DaisyUI 构建
Next-Portfolio-Template — Next.js 作品集模板
作者 zacharyLYH
基于 Next.js、TypeScript、Tailwind CSS 和 DaisyUI 构建的极简作品集模板,通过解析 JSON 文件渲染个人主页,包含 Hero、About Me、Experiences、Projects、Commendations 等区块。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 3
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
通过 JSON 文件配置内容,支持 Bio、Project、Experience、Footer 等对象类型
包含 Hero、About Me、Experiences、Projects、Commendations 等典型作品集区块
项目支持分页(每页最多 6 个卡片)和按技能筛选
技能和链接使用图标展示,图标需放入 /public/icons 并更新 /utilities/iconsList.ts
长段落按句号分割为带彩色圆点的列表项
模板详细介绍
Next-Portfolio-Template 是一个使用 Next.js 框架、TypeScript React、Tailwind CSS 和 DaisyUI 组件库构建的极简作品集模板。程序读取用户提供的特定语法 JSON 文件并渲染页面,用户只需理解 JSON 语法和 Next.js 部署策略即可使用。模板支持的区块包括:Hero 页(姓名、头衔、TLDR、图片、简历/成绩单文档、求职状态)、About Me(自我介绍、更多趣事)、Experiences(TLDR、故事、起止日期、相关链接、地点、进行中或过往、涉及技能)、Projects(TLDR、故事、相关链接、进行中或过往、涉及技能、是否精选)、Social Links、Commendations(推荐人图片、姓名、评语、完整头衔、单个社交链接)。README 说明用户主要与 /Render/Renderfile.ts 文件交互,目前支持 Bio、Project、Experience、Footer 四种 JSON 对象类型。README 未提供关于性能、生产就绪程度或与其他工具集成的说明。
适合你的项目吗?
适用场景
- 个人开发者或学生创建展示作品集和经历的静态网站
- 需要快速搭建包含项目、经历和推荐语等模块的个人主页
- 希望通过修改 JSON 文件而非编写组件来更新作品集内容
- 使用 Vercel 免费托管 Next.js 作品集
适合人群
- 熟悉 JSON 语法和 Next.js 部署的开发者
- 希望以极简风格展示个人经历和项目的用户
- 需要灵活添加多个项目和经历并支持筛选的创作者
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
需要 NodeJS V16.8 及以上版本
- 2
Fork 项目后运行 yarn install 或 npm i 安装依赖
- 3
使用 yarn run dev 或 npm run dev 启动开发环境进行测试
- 4
部署前可选运行 npm run build 验证构建
- 5
可部署到 Vercel 免费托管
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 BSD-2-Clause 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用以及源代码或二进制形式的分发。
- 源代码分发需保留版权声明、两项条件和免责声明;二进制分发需在文档或随附材料中重现这些内容。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 BSD-2-Clause 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
- 个人头像图片必须命名为 headshot.jpeg 并放置在 /public 目录下,否则无法正确显示。
- 社交链接中的邮箱目前仅支持 Gmail,其他邮箱需要自行实现或提交 issue。
- 当前仅支持 Gmail 邮箱,若需其他邮箱需自行实现或提交 issue。
- 添加自定义图标时需自行注意版权和使用限制规则,项目不提供图标版权保障。
- 项目请求用户保留代码中对模板创作者的致谢信息,以便搜索。
- 使用该模板需要 NodeJS V16.8 及以上版本。
- 并非所有功能组合都经过测试,缺少某些字段可能导致 UI 损坏。
查看原文依据
Redistribution and use in source and binary forms, with or without modification, are permitted
许可证原文
- `headshot.jpeg`: Your profile picture (mandatory) **must be named exactly headshot.jpeg**
README 原文
"[email protected]", //CURRENTLY ONLY GMAIL IS SUPPORTED
README 原文
- Currently, the only emails supported use `gmail`. If any other emails are desired, you may implement it yourself or raise an [issue](https://github.com/zacharyLYH/Next-Portfolio-Template/issues).
README 原文
> 1. Go find your icon, from a site of your choice (keep in mind copyright and usage restriction rules), download the icon as an SVG. A great source of icons has been [IconScount](https://iconscout.com/).
README 原文
- In the code, we leave some awknowledgement to the creator of this portfolio template; we kindly ask you to leave it in for searchability purposes!
README 原文
- NodeJS V16.8 and up
README 原文
https://github.com/zacharyLYH/Next-Portfolio-Template/blob/main/LICENSEhttps://github.com/zacharyLYH/Next-Portfolio-Template/blob/main/README.md> At the time of writing this, not every combination of features have been tested. In other words, missing certain fields might cause UI damages, and should be reported [here](https://github.com/zacharyLYH/Next-Portfolio-Template/issues).
README 原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-13。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料一般 · 73 / 100
- 技术栈
- Next.js · React
- 网站类型
- 作品集
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2023-08-22
- 截图检查日期
- 2026-10-13
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 Next.js。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
审核声明: codex-user-requested-batch-review-20261015 · 2026-10-15
查看当时使用的来源资料
SHA-256: f44ff8dadd0162528744edadda1f6e136c07a9c7d27dec3ee45ec79d470f9ced
2026-10-13T18:01:04.421Z
来源文件 / 仓库# TLDR
A minimalistic portfolio template built using the [NextJS](https://nextjs.org/) framework on Typescript React, Tailwind CSS, and DaisyUI component library. Some typical portfolio sections supported here include
- Hero page
- Name
- Title
- TLDR
- Image
- Resume and or Transcript document support
- Job status
- About Me
- About me
- More fun facts
- Experiences
- TLDR
- Story
- Start and end date
- Links to any work related to this experience
- Experience location
- Ongoing or previous
- Skills involved in this experience
- Projects
- TLDR
- Story
- Links to any work related to this experience
- Ongoing or previous
- Skills involved in this experience
- Featured or not featured
- Social Links
- Commendations
- Image of commender, or a blank image otherwise
- Name of commender
- The compliment
- Commender's credentials in full
- Social link (singular) to commender
On a high level, the program takes a JSON file with specific syntax, supplied by the user. The software parses the file and renders it. Assuming no desire to modify the current implementation, a user only needs to understand JSON syntax and NextJS deployment strategies.
# Knowledge prerequisites to adapt a portfolio out of this template
- NextJS deployment
- [Vercel](https://vercel.com/solutions/nextjs?utm_source=google&utm_medium=cpc&utm_campaign=18576682555&utm_campaign_id=18576682555&utm_term=deploy%20nextjs&utm_content=141733725825_627677616427&gclid=EAIaIQobChMIn9fG29fg_QIVGzizAB2FIAYfEAAYASAAEgJK7PD_BwE)
- Working JSON knowledge
- NodeJS V16.8 and up
- Optional: Typescript React, Tailwind CSS, DaisyUI if you desire to modify the template
# Usage documentation
A user would mostly interact with the `Renderfile.ts` file, which lives inside `/Render`. Currently, we have 4 JSON object types that are supported, `Bio`, `Project`, `Experience`, `Footer`. We'll proceed with defining the layout of the `Renderfile` for now, but you may open up a [sample](https://github.com/zacharyLYH/Next-Portfolio-Template/blob/main/Render/Renderfile.ts) `Renderfile` for side by side comparison.
On a high level, a user with the aforementioned skill requisites should
1. Fork the project
2. Read the remainder of the documentation and understand the syntax and requirements that the parser uses
3. `yarn install` or `npm i`
4. Make changes where appropriate
5. For testing, spin up a development environment using `yarn run dev` or `npm run dev`. Note, the `dev` environment comes with hot reloading built in.
6. Before deploying, optionally run `npm run build`. This confirms that your build is possible, and makes the deploying step a breeze.
7. Host it for free on [Vercel](https://vercel.com/solutions/nextjs?utm_source=google&utm_medium=cpc&utm_campaign=18576682555&utm_campaign_id=18576682555&utm_term=deploy%20nextjs&utm_content=141733725825_627677616427&gclid=EAIaIQobChMIn9fG29fg_QIVGzizAB2FIAYfEAAYASAAEgJK7PD_BwE)
### Images, Icons, and documents
Icons are central to this portfolio template. The idea is, instead of telling your reader about your skills, why not link it as an icon? The result is a more engaging and memorable portfolio. To follow along this section, open up [the example repo](https://github.com/zacharyLYH/Next-Portfolio-Template/tree/main/public). All static objects, such as images, icons, and documents go into the `/public` folder. Further, icons go into the `/icons` folder. Some items stay in the `/public` folder itself, including
- `headshot.jpeg`: Your profile picture (mandatory) **must be named exactly headshot.jpeg**
- `resume.pdf`: Your resume in a pdf form (optional)
- `transcript.pdf`: Your student transcript (optional)
- `titleicon.png`: The icon showing on your browser's title field.
### Icons
You need to be especially careful about icons. **Icons are used in skills and links**. You may find the list of supported icons in `/utilities/iconsList.ts`. Any icon you need that is currently unsupported can be requested through an issue or implemented on your own. In general, we recommend the use of SVGs as your icons.
> To add your own icons
>
> **Make sure we don't already have your icon in `/utilities/iconsList.ts`**
>
> 1. Go find your icon, from a site of your choice (keep in mind copyright and usage restriction rules), download the icon as an SVG. A great source of icons has been [IconScount](https://iconscout.com/).
> 2. Move your icon to `/public/icons`
> 3. Update `/utilities/iconsList.ts`. **Crucial: Make sure the icon's name and the listing in `/utilities/iconsList.ts` is exactly the same.**
> Keywords are highly sensitive, ie. do not misspell key words and please follow capitalization rules as defined, throughout the document.
> At the time of writing this, not every combination of features have been tested. In other words, missing certain fields might cause UI damages, and should be reported [here](https://github.com/zacharyLYH/Next-Portfolio-Template/issues).
### Lengthy paragraph splitting
In the current implementation, long paragraphs are split by periods `.`, seperated into bullet points, and a colored circle will sit in place of the bullet point. Check out [the implementation](https://github.com/zacharyLYH/Next-Portfolio-Template/blob/main/utilities/splitLines.tsx). Currently, places affected by `BeautifyParagraph` are:
- Bio aboutMe
- Experience story
- Project story
### Bio
This is the shape of the `Bio` section, replace text values as appropriate.
```
type: "Bio", //SPELL THIS CORRECTLY
name: "John Smith",
title: "Software Engineer II",
socialLinks: [
"https://github.com",
"https://www.linkedin.com",
"[email protected]", //CURRENTLY ONLY GMAIL IS SUPPORTED
],
tldr: "Full Stack developer; Love portfolio apps!",
aboutMe: "A user interface is like a joke. If you have to explain it, it’s not that good.",
image: "/headshot.jpeg", //YOUR PROFILE PIC HAS TO BE CALLED THIS
hobbies: [
"I love cooking",
"Ex high school swim team champion 2018",
],
jobStatus: "Interview Ready",
docs: {
resume: "/resume.pdf",
transcript: "/transcript.pdf",
}
```
- `aboutMe` is affected by [`BeautifyParagraph`](#lengthy-paragraph-splitting).
- In general, don't make any one section too long. A section too long throws off the readability of your portfolio, and in the worst case might trigger some overflow bugs (feel free to fix any with a PR if it happens though).
- Feel free to have a lengthy `aboutMe`.
- Currently, the only emails supported use `gmail`. If any other emails are desired, you may implement it yourself or raise an [issue](https://github.com/zacharyLYH/Next-Portfolio-Template/issues).
- The `hobbies` section is not exactly just for hobbies. On the UI , we call that section `More fun facts`, because you're probably a very interesting person!
- Social links follow [icon rules](#icons)
### Experience
```
type: "Experience", //SPELL THIS CORRECTLY
title: "Software Engineer II ",
summary: "Fantastic experience so far, can be better if we had free pancakes every morning...",
skills: ["golang", "nodejs"],
story: "Weird job experience; my office is my bed.",
links: ["https://github.com/some-cool-thing-i-built"],
current: true,
orgName: "Qwerty.ai",
dateStartEnd: "1/1-2/1",
```
- `story` is affected by [`BeautifyParagraph`](#lengthy-paragraph-splitting).
- Important: skills come with icons, so be careful about naming them and please make sure they exist in `iconsList.ts`.
- In general, use everything defined here, for any missing information might cause unexpected behavior.
- If this is not your `current` experience, feel free to omit that field.
- Skills and links follow [icon rules](#icons)
### Projects
```
type: "Project", //SPELL THIS CORRECTLY
name: "Portfolio template",
summary:"learned a lot",
skills: ["golang", "nodejs"],
story: "made me realize software development is my passion!",
links: ["https://github.com/your-repo"],
current: true,
featured: true,
dateStartToEnd: "1/1 - 2/1",
```
- `story` is affected by [`BeautifyParagraph`](#lengthy-paragraph-splitting).
- Any projects with unset `current` and or `featured` fields are set to `false` by default, ie. if you don't plan to set it, you may omit it.
- We understand that as engineers, you have a lot of cool projects that you've worked on. One of the strengths of this portfolio template is that you may add an unlimited (theoretically) number of projects, no impact on your UI!
- We use pagination, with a page having at most 6 cards.
- There is also a filter feature which will filter by the skills on the projects you provided.
- Skills and links follow [icon rules](#icons)
### Commendation
```
type: "Commendation", //SPELL THIS CORRECTLY
name: "Ex colleague John",
compliment: "Best person I've ever worked with.",
image: "/john.jpeg",
credentials: "web developer @ startup.ai",
link: "https://johndoe.bio"
```
- If no commendations are given, the section doesn't show.
- The link's icon need not be provided here unlike other instances; a default icon will be used here. You may change the icons associated if you choose, but be warned this involves understanding of how icons are implemented in other cases.
### Footer
```
type: "Footer", //SPELL THIS CORRECTLY
author: "John Smith", // PUT YOUR NAME
links: ["https://github.com/link-to-your-portfolio-template-repo"], //LINK TO YOUR PORTFOLIO GITHUB
```
- In links, be sure to link your github repository (if public)!
- In the code, we leave some awknowledgement to the creator of this portfolio template; we kindly ask you to leave it in for searchability purposes!
# Tips for success / optimization
- Use plenty of emojis :cowboy_hat_face:
- SORT YOUR PROJECTS AND EXPERIENCES BY SHOW-WORTHINESS
- The `RenderFile` is read sequentially, ie, objects at the top of the file are read first and thus will be showed first on the UI. Make sure to put those you want seen in front of those you don't mind not being paid less attention.
- Make use of project skills! The filtering tool is made expressly so that you won't be disadvantaged throwing a viewer a ton of projects!
- Provide as much data as possible (try making use of all the available fields)
# Troubleshoot
##### A known working link says it can't find the webpage.
- Make sure all links starts with `https://`
- Make sure links do not go to a page behind a login/paywall - the reader probably isn't allowed to look at your private/restricted content.
##### One (or more) of my skills are not showing
- A common mistake is to either
1. Forget to include an icon for it
2. Forget to update `/utilities/iconList.ts`
3. The name of the skill in your icon's SVG name, whats listed in `/utilities/iconList.ts`, `Renderfile` is inconsistent. If a skill is called `excel`, make sure it is called `excel` in all 3 places.
# How to contribute
Fork this repository, make your changes, send a PR with head as dev. Be sure to include a description of your modifications and screenshots if applicable for easier comprehension!
# Limitations and last words
This project is essentially a hobby project and by no means built with lofty goals in mind. There will most likely be bugs to be taken care of and we encourage you to be a part of that. This project is constantly evolving, and I'll be personally managing new features and bug fixes as needed.
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

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

nxt-lnk
Custom bio links for creatives who love coding. A perfect custom alternative for linktree, bio and other short…
Next.js · 作品集

sylph
A minimal portfolio template.
Next.js · 作品集

sleek-portfolio
sleek-portfolio 是一个面向开发者个人品牌展示的现代作品集模板,基于 Next.js 15、TypeScript、Tailwind CSS 和 Shadcn UI 构建。
Next.js · 作品集

research-website-template
React + Next.js template for research websites (for PhD students, researchers, etc)
Next.js · 作品集

shadcn-portfolio
shadcn-portfolio 是一个面向开发者的作品集模板,技术栈为 Next.js 15、shadcn/ui、Tailwind CSS 和 Framer Motion。
Next.js · 作品集
