Astro作品集

hophni.dev — Astro 作品集模板

作者 HoPHNiDev

基于 Astro 的 VS Code 风格开发者作品集模板,内容以 Markdown 管理,内置隐藏终端与多个 Stitch 彩蛋交互。

看看你的网站会是什么样

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

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

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

目前有 1 张原始预览,可打开完整图片查看设计细节。

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

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

值得关注的模板亮点

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

01

VS Code 风格的标签页导航,标签可关闭并支持 Ctrl/Cmd+Z 逐个恢复

02

隐藏终端覆盖层,支持 Tab 补全与 help、neofetch、git status 等命令

03

多个 Stitch 彩蛋:调试器、技术徽章评论、复制提示、闲置崩溃动画和 404 页面

04

所有内容通过 src/content/ 下的 Markdown 文件管理,无需修改组件代码

05

主题颜色在 global.css 的 @theme 块中集中定义

06

附带 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 许可,可免费使用、修改、商用和分发,但演示图片、字体、图标等第三方素材需单独核对许可,域名、托管等外部服务可能另行收费。

Astro作品集

适合你的项目吗?

适用场景

  • 为开发者搭建个人作品集网站,展示技能、工作经历和项目
  • 以 Markdown 维护作品集内容,避免直接编辑组件代码
  • 通过隐藏终端和彩蛋交互增加网站趣味性
  • 部署到 GitHub Pages 并使用自定义域名

适合人群

  • 希望快速搭建 IDE 风格个人作品集的开发者
  • 习惯用 Markdown 管理内容的用户
  • 需要 GitHub Pages 部署方案与自定义域名配置参考的人
  • 喜欢终端风格界面和彩蛋交互的开发者

上手与定制指南

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

  1. 1

    运行 npm install 安装依赖,npm run dev 启动开发服务器,默认地址为 http://localhost:4321/

  2. 2

    在 src/content/ 下的 Markdown 文件中修改个人信息、经历、项目、联系方式和终端命令

  3. 3

    在 src/styles/global.css 的 @theme 块中调整 IDE 配色

  4. 4

    部署前在 public/CNAME 填写自定义域名,并在 astro.config.mjs 中设置 site

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

3. The workflow (`.github/workflows/deploy.yml`) will auto-deploy on every push to `main`

README 原文
https://github.com/HoPHNiDev/hophni.dev/blob/main/LICENCEhttps://github.com/HoPHNiDev/hophni.dev/blob/main/README.md

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**.

![Astro](https://img.shields.io/badge/Astro-5.x-orange?logo=astro)
![Tailwind](https://img.shields.io/badge/Tailwind-v4-blue?logo=tailwindcss)
![Deploy](https://img.shields.io/badge/Deploy-GitHub%20Pages-black?logo=github)

> 🛠️ **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!
反馈内容错误

看看同类模板

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