VS Code 风格的标签页导航,标签可关闭并支持 Ctrl/Cmd+Z 逐个恢复
hophni.dev — Astro 作品集模板
作者 HoPHNiDev
基于 Astro 的 VS Code 风格开发者作品集模板,内容以 Markdown 管理,内置隐藏终端与多个 Stitch 彩蛋交互。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
目前有 1 张原始预览,可打开完整图片查看设计细节。
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
隐藏终端覆盖层,支持 Tab 补全与 help、neofetch、git status 等命令
多个 Stitch 彩蛋:调试器、技术徽章评论、复制提示、闲置崩溃动画和 404 页面
所有内容通过 src/content/ 下的 Markdown 文件管理,无需修改组件代码
主题颜色在 global.css 的 @theme 块中集中定义
附带 GitHub Pages 部署工作流与自定义域名配置说明
模板详细介绍
这是一个个人作品集网站模板,整体采用类似 VS Code 的深色 IDE 界面。页面由可关闭的标签页导航组织,包含终端风格的 Hero 区、以 JSON 形式呈现的经历时间线、项目卡片网格,以及带 VS Code 状态栏的页脚。
所有可编辑内容都放在 src/content/ 下的 Markdown 文件中:hero/about.md 定义角色、用户名、主机名、简介与技能;experience/ 每个文件对应一段工作经历;projects/ 每个文件对应一个项目卡片;contacts/links.md 管理联系方式;terminal/commands.md 定义隐藏终端命令;stitch/reviews.md 存放技术徽章评论。主题颜色在 src/styles/global.css 的 @theme 块中调整,域名在 public/CNAME 与 astro.config.mjs 的 site 字段中设置。
交互彩蛋包括:右下角 Stitch 调试器(悬停、点击、闲置时出现)、按反引号、波浪号或 Cmd/Ctrl+K 打开 Ubuntu 风格隐藏终端(支持 Tab 补全,内置 help、neofetch、git status 等命令)、悬停技术徽章触发 Stitch 评论、在经历区选中文字触发复制提示、标签页闲置五分钟后触发页面元素坠落与 Stitch 崩溃动画,以及自定义 404 页面。
模板使用 Astro 与 Tailwind CSS,内容通过 Astro Content Collections 以 Markdown 管理,部署目标为 GitHub Pages,并附带 GitHub Actions 工作流。仓库采用 MIT 许可,可免费使用、修改、商用和分发,但演示图片、字体、图标等第三方素材需单独核对许可,域名、托管等外部服务可能另行收费。
适合你的项目吗?
适用场景
- 为开发者搭建个人作品集网站,展示技能、工作经历和项目
- 以 Markdown 维护作品集内容,避免直接编辑组件代码
- 通过隐藏终端和彩蛋交互增加网站趣味性
- 部署到 GitHub Pages 并使用自定义域名
适合人群
- 希望快速搭建 IDE 风格个人作品集的开发者
- 习惯用 Markdown 管理内容的用户
- 需要 GitHub Pages 部署方案与自定义域名配置参考的人
- 喜欢终端风格界面和彩蛋交互的开发者
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
运行 npm install 安装依赖,npm run dev 启动开发服务器,默认地址为 http://localhost:4321/
- 2
在 src/content/ 下的 Markdown 文件中修改个人信息、经历、项目、联系方式和终端命令
- 3
在 src/styles/global.css 的 @theme 块中调整 IDE 配色
- 4
部署前在 public/CNAME 填写自定义域名,并在 astro.config.mjs 中设置 site
- 5
在 GitHub 仓库的 Settings → Pages 中将 Source 设为 GitHub Actions,推送 main 分支后自动部署
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
- 设计原型使用 Google Stitch 工具,属于外部服务;如需自行修改设计可能需访问该外部服务。
- 使用自定义域名需自行编辑 public/CNAME 并配置域名,域名注册与托管为外部付费服务。
- 部署到自定义域名需在 astro.config.mjs 中手动设置 site 字段。
- 部署依赖 GitHub Pages 与 GitHub Actions,需要 GitHub 账号及相应仓库设置。
- 自动部署依赖仓库中的 GitHub Actions 工作流,需在 GitHub 上启用 Pages 并推送 main 分支。
查看原文依据
Permission is hereby granted, free of charge
许可证原文
| Design | [Google Stitch](https://stitch.withgoogle.com/) (initial prototype) |
README 原文
- **Domain**: edit `public/CNAME`
README 原文
**`astro.config.mjs`** — set `site` to your domain:
README 原文
2. Under **Source**, select **GitHub Actions**
README 原文
https://github.com/HoPHNiDev/hophni.dev/blob/main/LICENCEhttps://github.com/HoPHNiDev/hophni.dev/blob/main/README.md3. The workflow (`.github/workflows/deploy.yml`) will auto-deploy on every push to `main`
README 原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-12。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 80 / 100
- 技术栈
- Astro
- 网站类型
- 作品集
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-02-26
- 截图检查日期
- 2026-10-12
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 Astro。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
审核声明: [email protected] · 2026-10-13
查看当时使用的来源资料
SHA-256: a76dbded4d5f3e803129c6b8c55347fc88ce60ac8ff25546e3146c9fb8be53c6
2026-10-12T22:42:07.009Z
来源文件 / 仓库# 🖥️ IDE & Stitch — Developer Portfolio A personal portfolio site with an **IDE-like (VS Code)** dark theme, powered by [Astro](https://astro.build/) and packed with interactive **Stitch Easter eggs**.    > 🛠️ **Template by [HoPHNi](https://github.com/HoPHNiDev)** — fork it, customize it, make it yours. --- ## 🚀 Quick Start ```bash # Install dependencies npm install # Run dev server npm run dev # Build for production npm run build # Preview production build npm run preview ``` The site will be available at `http://localhost:4321/`. --- ## 📁 Project Structure ``` src/ ├── content/ ← All editable content (Markdown) │ ├── hero/about.md ← Role, skills, bio for terminal │ ├── experience/*.md ← Work experience entries │ ├── projects/*.md ← Pet project cards │ ├── contacts/links.md ← GitHub, Telegram, etc. │ ├── terminal/commands.md ← Hidden terminal commands │ └── stitch/reviews.md ← Stitch tech review comments ├── components/ ← Astro components │ ├── Header.astro ← IDE tab navigation │ ├── Hero.astro ← Terminal-style hero section │ ├── ExperienceTimeline.astro ← JSON-formatted experience │ ├── ProjectCards.astro ← Project card grid │ ├── Footer.astro ← Contact + VS Code status bar │ ├── StitchDebugger.astro ← 🐛 Corner Stitch Easter egg │ ├── StitchReviewer.astro ← 🔍 Tech badge tooltip │ ├── StitchCopyGuard.astro ← 🔒 Copy guard toast │ ├── StitchCrash.astro ← 💥 Idle crash effect │ └── HiddenTerminal.astro ← 🖥️ Secret terminal ├── layouts/BaseLayout.astro ← HTML head, fonts, meta tags ├── pages/ │ ├── index.astro ← Main page │ └── 404.astro ← Custom 404 with Stitch ├── styles/global.css ← Tailwind v4 theme tokens public/ ├── stitch-debugger.png ← Stitch with a bug ├── stitch-reviewer.png ← Stitch with magnifying glass ├── stitch-crash.png ← Stitch sitting innocently ├── stitch-guard.png ← Stitch guarding data ├── stitch-404.png ← Stitch chewing cables ├── favicon.svg ← Terminal prompt icon └── CNAME ← Custom domain ``` --- ## ✏️ How to Customize All content lives in **Markdown files** inside `src/content/`. No component code changes needed. ### 👤 Hero Section — `src/content/hero/about.md` ```yaml --- role: "Your Role Title" username: "yourname" # Terminal prompt: yourname@portfolio hostname: "portfolio" # Terminal prompt + path templateUrl: "https://github.com/..." # "Use Template" header button bio: "Short bio paragraph." skills: backend: ["FastAPI", "Django"] database: ["PostgreSQL", "Redis"] devops: ["Docker", "CI/CD"] tools: ["Celery", "RabbitMQ"] --- ``` ### 💼 Experience — `src/content/experience/*.md` Create one `.md` file per job (e.g., `1-company.md`): ```yaml --- company: "Company Name" role: "Your Role" period: "Jan 2024 — Present" stack: ["Python", "FastAPI", "PostgreSQL"] order: 1 # Lower = shown first current: true # Optional, marks green dot description: "Project context" --- - Built something amazing - Led a team of 5 ``` ### 🚀 Projects — `src/content/projects/*.md` ```yaml --- name: "Project Name" description: "What the project does." stack: ["Python", "Selenium"] icon: "smart_toy" # Material Symbol name link: "https://example.com" # Optional (GitHub, website, etc.) order: 1 --- ``` > Icons: browse [Material Symbols](https://fonts.google.com/icons) ### 📬 Contacts — `src/content/contacts/links.md` ```yaml --- heading: "Want to collaborate or hire me?" links: # Material Symbol icon (default) - label: "[email protected]" url: "mailto:[email protected]" icon: "mail" # Custom SVG icon (e.g. brand logos) - label: "github.com/yourname" url: "https://github.com/yourname" icon: "code" iconType: "svg" # "material" (default) or "svg" svgPath: "M12 0c-6.626..." # SVG path data (d attribute) --- ``` > `iconType: "svg"` renders an inline `<svg>` with the provided `svgPath`. Omit it for default Material Symbols. ### 🎨 Theme Colors — `src/styles/global.css` Edit the `@theme` block to change IDE colors: ```css @theme { --color-bg-dark: #0D1117; /* Main background */ --color-ide-gray: #161B22; /* Panel backgrounds */ --color-primary: #58A6FF; /* Accent color */ --color-accent-green: #3FB950; /* Terminal green */ } ``` ### 🌐 Domain & SEO - **Domain**: edit `public/CNAME` - **Site URL**: edit `site` in `astro.config.mjs` - **Title & Description**: edit `src/layouts/BaseLayout.astro` --- ## 🗂️ IDE Features ### Closable Tabs Every tab in the header has a **close button (×)** that appears on hover — just like VS Code: - Click × to **close the tab** and hide its section from the page - All tabs can be closed - A **"Restore"** button appears when tabs are closed — click to reopen all - Press **`Ctrl+Z`** (or `Cmd+Z`) to restore the last closed tab one by one ### Active Tab Tracking The active tab automatically highlights based on scroll position. --- ## 🥚 Easter Eggs ### 1. 🐛 Stitch Debugger (bottom-right corner) Stitch peeks from the bottom-right holding a glowing bug. - **Hover** → Stitch peeks up fully - **Click** → Console log: *"Burp! Delicious bugs..."* - **Idle** → Stitch periodically peeks up on his own ### 2. 🖥️ Hidden Terminal Press **`` ` ``** (backtick), **`~`** (tilde), or **`Cmd+K`** / **`Ctrl+K`** to open an Ubuntu-styled terminal overlay. **Tab autocomplete** — type a partial command and press `Tab` to complete it. | Command | Output | |---------|--------| | `help` | List of available commands | | `cat skills.json` | Tech skills (from hero section) | | `python3 info.py` | Bio in triple quotes | | `cat contact.sh` | Contact links | | `neofetch` | Ubuntu-style ASCII + system info | | `fetch_stack` | ASCII tech stack table | | `ls` | Virtual file listing | | `git status` | Fake git status | | `sudo rm -rf /` | Glitch effect + ASCII art 💀 | > Customize commands and neofetch info in `src/content/terminal/commands.md` ### 3. 🔍 Stitch Code Reviewer Hover over any **tech badge** (in Experience or Projects) — Stitch appears with a speech bubble commenting on the technology. > Customize comments in `src/content/stitch/reviews.md` ### 4. 🔒 Copy Guard Select text inside the **Experience** section — a toast appears: > *"🔒 Data locked. Just kidding, copy whatever you want 😜"* 30-second cooldown between triggers. ### 5. 💥 The Crash Leave the tab **inactive for 5 minutes**, then return: 1. Page scrolls to top 2. ALL sections "fall" into a pile with physics 3. Stitch sits on the wreckage: *"SYSTEM CRASH — docker-compose down // oops"* 4. Move the mouse to **reboot** — elements spring back to their positions > Change idle duration: edit `IDLE_MS` in `src/components/StitchCrash.astro` ### 6. 🔌 404 Page Navigate to any invalid URL — Stitch is caught chewing server cables with electric sparks. --- ## 🚢 Deployment ### Step 1: Create GitHub Repository ```bash git init git remote add origin https://github.com/YOUR_USERNAME/YOUR_REPO.git git add . git commit -m "initial commit" git push -u origin main ``` ### Step 2: Enable GitHub Pages 1. Go to **Settings → Pages** in your GitHub repo 2. Under **Source**, select **GitHub Actions** 3. The workflow (`.github/workflows/deploy.yml`) will auto-deploy on every push to `main` ### Step 3: Verify Deployment Push to `main` → wait ~1 min → visit `https://YOUR_USERNAME.github.io/YOUR_REPO/` ```bash git add . git commit -m "update portfolio" git push origin main ``` --- ### 🌐 Custom Domain Setup (e.g. `hophni.dev`) #### 3a. Set domain in project **`public/CNAME`** — set your domain (no `https://`): ``` yourdomain.com ``` **`astro.config.mjs`** — set `site` to your domain: ```js export default defineConfig({ site: 'https://yourdomain.com', // ... }); ``` #### 3b. Configure DNS at your domain registrar Go to your domain registrar's DNS settings and add these records: **For root domain (`yourdomain.com`)** — add 4 A records: | Type | Name | Value | |------|------|-------| | A | `@` | `185.199.108.153` | | A | `@` | `185.199.109.153` | | A | `@` | `185.199.110.153` | | A | `@` | `185.199.111.153` | **For `www` subdomain** — add CNAME: | Type | Name | Value | |------|------|-------| | CNAME | `www` | `YOUR_USERNAME.github.io` | > ⏳ DNS changes can take 10 min–48 hours to propagate. #### 3c. Set domain in GitHub 1. Go to **Settings → Pages** 2. Under **Custom domain**, enter `yourdomain.com` 3. Click **Save** 4. Wait for DNS check to pass (green checkmark) 5. ✅ Check **Enforce HTTPS** (appears after DNS verifies) #### 3d. Verify everything works ```bash # Check DNS propagation dig yourdomain.com +short # Should show: 185.199.108.153, ...109, ...110, ...111 # Check HTTPS curl -I https://yourdomain.com # Should show: HTTP/2 200 ``` Visit `https://yourdomain.com` — your portfolio should load with HTTPS 🔒 --- ## 🛠️ Tech Stack | Layer | Tech | |-------|------| | SSG | [Astro 5](https://astro.build/) | | Styling | [Tailwind CSS v4](https://tailwindcss.com/) | | Content | Astro Content Collections (Markdown) | | Hosting | GitHub Pages | | CI/CD | GitHub Actions | | Design | [Google Stitch](https://stitch.withgoogle.com/) (initial prototype) | --- ## 📜 License MIT — use it, fork it, make it yours. --- > **Template developed by [HoPHNi](https://github.com/HoPHNiDev)** · Star ⭐ the repo if you like it!
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

astro-theme-cactus
A simple Astro theme. Use it to create your blog or website.
Astro · 作品集

astrofy
Astrofy is a free and open-source template for your Personal Portfolio Website built with Astro and TailwindCS…
Astro · 作品集

astro-nano
Astro Nano is a static, minimalist, lightweight, lightning fast portfolio and blog.
Astro · 作品集

astro-erudite
An opinionated, unstyled static blogging template built with Astro and native CSS.
Astro · 作品集

astro-sphere
Astro Sphere is a static, minimalist, lightweight, lightning fast portfolio and blog.
Astro · 作品集

astro-micro
Blog theme for Astro with search and comments built-in. Zero frameworks.
Astro · 作品集
