首页与 Work 页面的案例卡片由 docs/work/ 下的 Markdown 文件自动生成,增删文件无需修改其他代码
vitepress-portfolio — Vue 作品集模板
作者 BootForm
基于 VitePress 与 Vue 的作品集模板,包含首页、案例研究网格和可用的联系表单,通过 GitHub Actions 自动部署。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 3
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
联系表单通过 BootForm 服务接收提交,无需自建后端,但需自行生成并认领表单 ID
内置八个示例案例研究,展示四列网格布局,首页只显示前四个
品牌色在 style.css 中集中定义,修改一个值即可影响按钮、链接和 VitePress 强调色
包含 GitHub Actions 工作流,推送到 main 分支后自动构建并部署到 GitHub Pages
使用 MIT 许可,允许免费使用、修改、商用和分发,需保留版权声明和许可声明
模板详细介绍
这是一个面向自由职业者或小型工作室的作品集站点模板,使用 VitePress 和 Vue 构建。它提供首页、案例研究页面以及一个可实际提交的联系表单。首页的“Selected work”卡片和 Work 页面的网格由 docs/work/ 下的 Markdown 文件自动生成,新增或删除案例文件时无需手动调整布局。模板附带八个示例案例研究,足以展示四列网格的完整宽度;每个案例的 frontmatter 定义标题、描述、图片、排序和可选外链,正文部分复用同一张图片作为顶部横幅。联系表单依赖 BootForm 服务:静态站点本身没有后端,表单通过一个随机 UUID 作为表单 ID 指向 BootForm,提交后需在 48 小时内认领该表单,否则提交内容会被删除。模板使用 MIT 许可,可免费用于商业项目,但演示图片来自 Unsplash(通过 Picsum Photos),需替换为自己的作品截图;域名、托管等外部服务可能产生费用。
适合你的项目吗?
适用场景
- 自由职业者或小型工作室搭建展示案例作品的作品集站点
- 需要静态站点但希望联系表单能实际接收消息的开发者
- 使用 VitePress 并希望以非文档站默认方式构建作品集页面的项目
- 通过 GitHub Pages 免费托管个人或团队作品集并自动部署
适合人群
- 熟悉终端基本操作(git clone、npm install、npm run dev)的开发者
- 已安装 Node.js 20 或更高版本并拥有 GitHub 账号的用户
- 愿意使用 BootForm 作为表单后端并自行生成、认领表单 ID 的开发者
- 需要 MIT 许可下可商用作品集模板的自由职业者或小团队
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
克隆仓库后运行 npm install 和 npm run dev 启动本地开发服务器
- 2
将 docs/.vitepress/config.mts 中的 base 改为实际仓库名,否则部署后样式会丢失
- 3
替换 docs/public/logo.svg 以及 docs/.vitepress/theme/style.css 中的品牌色
- 4
在 docs/contact.md 中生成并填入自己的 BootForm 表单 ID,并在上线前认领该表单
- 5
部署时在 GitHub 仓库的 Settings → Pages → Source 中选择 GitHub Actions
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
- 联系表单依赖第三方服务 BootForm 接收提交,静态站点本身无后端,需将表单指向该服务。
- 必须自行生成全新的随机表单 ID,不能使用示例或他人的 ID,否则提交内容会发送给他人。
- 表单需在站点公开上线前通过认领链接认领,未认领的提交内容仅保留 48 小时后删除。
- 模板附带的演示图片来自 Unsplash/Picsum,仅作占位,上线前必须替换为自己的作品截图。
查看原文依据
Permission is hereby granted, free of charge
许可证原文
We will use [BootForm](https://bootform.com), because you can point a form at it and it works immediately, with no account.
README 原文
**Use your own.** Do not use the one printed above, and do not use a friend's. Whoever claims a > form ID first owns it, and everything sent to it goes to them. Yours should be a fresh random one > that nobody else has seen.
README 原文
**3c. Try it, then claim it** at the claim link it gives you, **before** the site goes live publicly. Held submissions are kept for 48 hours before they're deleted.
README 原文
https://github.com/BootForm/vitepress-portfolio/blob/main/LICENSEhttps://github.com/BootForm/vitepress-portfolio/blob/main/README.mdThe images that ship with this template are real photos, not mockups: free-to-use ([Unsplash License](https://unsplash.com/license), via [Picsum Photos](https://picsum.photos)), so the demo looks like a real site, but they're standing in for actual screenshots of your own work. Replace them before this goes live.
README 原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-12。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 85 / 100
- 技术栈
- Vue · VitePress
- 网站类型
- 作品集
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-10-11
- 截图检查日期
- 2026-10-12
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 Vue。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
审核声明: [email protected] · 2026-10-13
查看当时使用的来源资料
SHA-256: 29ae8ab5ae07fcc33c8d6a1eec72324c4e509e19ae5ccef1c0ad313b75989a39
2026-10-12T18:57:30.726Z
来源文件 / 仓库# A portfolio site for VitePress A portfolio without a working contact form is just a gallery. This template is [vitepress-marketing](https://github.com/BootForm/vitepress-marketing)'s sibling, built for a freelancer or small studio: a home page, real case studies, and a form that actually reaches you. By the end you will have a home page, eight example case studies in a generated grid, and a working contact form, built with [VitePress](https://vitepress.dev) and deployed automatically by GitHub Actions. **[See what you are building →](https://bootform.github.io/vitepress-portfolio/)** --- ## Before you start You need: - A free GitHub account. - [Node.js](https://nodejs.org) 20 or later installed on your computer. - Some comfort with a terminal. `git clone`, `npm install`, `npm run dev`, that level. Don't have some of this yet, or not sure how? [Setting up your computer](https://bootform.com/docs/computer-setup) walks through installing Git and Node.js, a basic terminal tutorial, and installing and using VS Code, from scratch. If any of that sounds like too much right now, [first-website](https://github.com/BootForm/first-website) needs none of it and still ends with a real site and a working form. --- ## Step 1: Make your own copy Click **Use this template**, then **Create a new repository**. Name it `vitepress-portfolio`, or whatever you like. > **Naming it something other than `vitepress-portfolio`?** Open `docs/.vitepress/config.mts` and > change `base: '/vitepress-portfolio/'` (and the favicon path under `head`, in the same file) to match (`/your-repo-name/`). Get this wrong and the > deployed site looks completely unstyled, while `npm run dev` still works fine locally, since the > dev server never uses `base`. Then clone *your* new repository to your computer: ```bash git clone https://github.com/yourname/vitepress-portfolio.git cd vitepress-portfolio npm install npm run dev ``` Open the address it prints. That's your site, running on your own computer. It still says Maya Torres. We'll fix that next. --- ## Step 2: Make it yours Look for the lines marked `CHANGE ME`, across a few files: - **`docs/.vitepress/config.mts`**: your name, site description, and the nav links. - **`docs/public/logo.svg`**: your logo. Replace the file itself (any image format works, keep the filename `logo.svg` or update the two places that reference it, listed in `AGENTS.md`) and it updates in both the header and the footer. - **`docs/.vitepress/theme/style.css`**: your brand colour. One value, used everywhere: buttons, links, VitePress's own accent colour. - **`docs/index.md`**: the home page. The `hero` and `features` blocks are plain YAML frontmatter. The "Selected work" cards below them, and the Work page's own grid, are both generated: neither needs editing when you add or remove a case study. - **`docs/work/*.md`**: eight example case studies, enough to see the grid at its full 4-column width. Each one's frontmatter (`title`, `description`, `image`, `order`, and an optional `link` to a live site) is what shows up on its card, and `order` sets where it sits in the grid (the home page shows the first 4); the markdown below that is the page itself, with the same `image` reused as a hero banner at the top. The images that ship with this template are real photos, not mockups: free-to-use ([Unsplash License](https://unsplash.com/license), via [Picsum Photos](https://picsum.photos)), so the demo looks like a real site, but they're standing in for actual screenshots of your own work. Replace them before this goes live. Delete the ones you don't need; the grid and column count adjust automatically. - **`docs/contact.md`**: the hero heading, and the location, phone and email in the left-hand info column (or delete any of those three blocks you don't want to list). **Adding a new case study:** copy one of the example files, change its frontmatter and body, and you're done. It appears as a card on both the home page and the Work page automatically, with no other file to touch. Deleting a case study file removes its card the same way. > **Picking a colour is the hard part.** If you have no idea, `--color-brand-500: #2563eb` (a > plain blue) is a safe default. --- ## Step 3: Make the contact form actually work Here is the bit most tutorials skip. A static site has no program running behind it, so there is nowhere for a form to send anything. We will use [BootForm](https://bootform.com), because you can point a form at it and it works immediately, with no account. **3a. Generate your form ID.** It is just a random UUID, and it has to be yours alone. Open BootForm's own [UUID generator](https://bootform.com/uuidgenerator) and copy what it shows you (or run `crypto.randomUUID()` in any browser console). You'll get something like `11111111-1111-4111-8111-111111111111`, though a real one won't repeat digits like that. > **Use your own.** Do not use the one printed above, and do not use a friend's. Whoever claims a > form ID first owns it, and everything sent to it goes to them. Yours should be a fresh random one > that nobody else has seen. **3b. Paste it into `docs/contact.md`**, replacing `__YOUR_FORM_ID__` in the `action` attribute. **3c. Try it, then claim it** at the claim link it gives you, **before** the site goes live publicly. Held submissions are kept for 48 hours before they're deleted. --- ## Step 4: Deploy it ```bash git add -A git commit -m "Make it mine" git push ``` In your repository, **Settings → Pages → Source → GitHub Actions** (not "deploy from a branch"). The included workflow (`.github/workflows/deploy.yml`) builds and deploys on every push to `main`. **Optional: a real domain.** The same steps as [one-page-site's Step 5](https://github.com/BootForm/one-page-site#step-5-put-it-on-your-own-domain) apply here: a `CNAME` file in `docs/public/`, DNS records at your registrar, then **Enforce HTTPS** in the same Pages settings. Also change `base: '/vitepress-portfolio/'` to `base: '/'` in `docs/.vitepress/config.mts`, since a custom domain serves from the root, not a subpath. --- ## That's it You have a real portfolio, with case studies and a working contact form, built the way VitePress is meant to be used for this, not the docs-site defaults. ### Where to go next - [`site-skills`](https://github.com/BootForm/site-skills) if you use Claude Code: commands to add page sections, add a new kind of content (books, team members, events), change the theme and swap icons, all following this template's conventions. - [`site-sections`](https://bootform.github.io/site-sections/) for copy-paste page sections (heroes, pricing, FAQs, footers) that survive VitePress's own styles. | | | |---|---| | **A blog** | [vitepress-blog](https://github.com/BootForm/vitepress-blog) if you want to write about your work too, with real post tags and RSS. | | **A fuller marketing site** | [vitepress-marketing](https://github.com/BootForm/vitepress-marketing) if you need a pricing page and more sections than a portfolio calls for. | | **More form options** | File uploads, autoresponders, Discord and Slack: [bootform.com/docs](https://bootform.com/docs/). | ### Stuck? Open an [issue](https://github.com/BootForm/vitepress-portfolio/issues) and say what happened. --- ## Frequently hit problems **`npm run build` fails.** Check `node --version`; this needs Node.js 20 or later. **The site deploys but looks completely unstyled.** `base` in `docs/.vitepress/config.mts` almost certainly doesn't match your actual repo name. See the note in Step 1. **A new case study doesn't show up as a card.** Check its frontmatter has `title`, `description` and `image` set, and that the file lives directly in `docs/work/` (not a subfolder), matching `work/work.data.ts`'s `work/*.md` pattern. **A card's image is broken, or a card links nowhere.** These are both built from runtime data (`ProductCard.vue`'s props), not markdown text, so if you're editing that component directly rather than just adding a case study file, see `AGENTS.md`'s link-handling section: both `:src` and `:href` need `withBase(...)`, not a plain string. **The form shows raw text instead of a nice page.** You are seeing the response as JSON. That is normal for now. Once you claim the form you can set a redirect so people land back on your site. ## Licence MIT. Do whatever you like with it, including using it for a real business.
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

portfolio-template
👋A simple, minimal portfolio website!
Vue · 作品集

vuejs-os-template
vuejs-os-template 是一个面向 Vue 2 的 Web OS 模板,目标是让开发者快速搭建一个带有桌面、窗口和导航栏的交互式网页。
Vue · 作品集

resume
leegeunhyeok/resume 是一份以 Vue 3 + TypeScript 构建的个人简历模板,视觉上模仿 macOS Big Sur 风格,适合开发者展示个人经历与作品。
Vue · 作品集

portfolio-template
A fully customizable portfolio website template built using Vue.js and Tailwind CSS.
Vue · 作品集

vue-porto
VuePorto is a Bootstrap resume or CV landing page theme using Vuejs spa to help you create easy to use, stylis…
Vue · 作品集

remzi.info
My personal website built with Vite, Vue.js, TypeScript and Sass. Which can also be used as a template for oth…
Vue · 作品集
