Work 与 Life 双面结构,在同一站点内切换专业与个人内容视角
astro-flipside — Astro 作品集模板
作者 nagameTW
一款基于 Astro 的中文友好型博客与作品集主题,用 Work 与 Life 双面结构在同一站点呈现专业与个人内容。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 3
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
默认繁体中文界面,字典集中在 src/locales,可切换英文或扩展其他语言
博客文章支持 Markdown 与 MDX,含草稿、标签、封面图与更新日期等前置字段
项目、相簿、关于页内容分别由 src/data 下的数据文件驱动
构建后用 Pagefind 生成纯静态全文搜索索引
提供 GitHub Pages 的 Actions 部署工作流,push 到 main 自动构建发布
模板详细介绍
Flipside 是一款 Astro 静态站点主题,定位为个人博客与作品集。它把内容分成 Work(专业)与 Life(生活)两面,访客可在同一站点内切换视角,查看项目、文章、相簿与个人介绍。主题默认语言为繁体中文,界面字典位于 src/locales,可切换为英文或按同样 key 结构扩展其他语言。
内容组织上,博客文章放在 src/content/blog,支持 Markdown 与 MDX,前置字段可声明标题、摘要、发布日期、更新日期、封面图、标签与草稿状态;草稿只在开发环境显示,构建时自动排除。项目列表在 src/data/projects.ts,相簿在 src/data/gallery.ts,关于与 Life 页内容也在 src/data 下维护。文章内的相对路径图片会被处理为 webp 并生成响应式尺寸。
技术层面,主题使用 Astro 做静态输出,界面基于 Tocas UI,代码块由 Expressive Code 渲染,全文搜索由 Pagefind 在构建后生成静态索引。站点配置集中在 src/config.ts,部署到 GitHub Pages 时需要让 site 与 base 与仓库类型对应,否则样式和图片可能无法加载。README 给出的部署路径包括 GitHub Pages、Vercel、Netlify 与 Cloudflare Pages,其中 GitHub Pages 通过仓库内的 Actions 工作流在 push 到 main 时执行类型检查与构建后发布。
限制方面,本次收录的是公开仓库中采用 MIT 许可的免费版本,免费范围仅指该版本代码;演示图片、字体、图标等第三方素材需按各自许可单独核对,域名、托管等外部服务可能另外收费。主题的样式风格、具体组件清单与可配置项以仓库实际文件为准,本介绍不展开未经资料确认的细节。
适合你的项目吗?
适用场景
- 需要同时展示职业项目与个人爱好、又不想分成两个网站的个人主页
- 以中文写作为主、希望界面文案可切换或扩展语言的博客
- 用数据文件维护项目列表与相簿、文章用 Markdown 撰写的作品集站点
- 希望部署到 GitHub Pages 或 Vercel 等静态托管平台的 Astro 项目
适合人群
- 熟悉 Markdown 与基础前端配置、想快速搭建个人站点的开发者
- 需要中文排版与多语言界面切换的博客作者
- 希望把作品集与生活记录放在同一站点的创作者
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
通过 GitHub 的 Use this template 或 gh repo create --template 创建仓库后执行 npm install 与 npm run dev
- 2
编辑 src/config.ts 顶部的 site 与 base,使其与部署方式匹配,否则样式和图片可能无法加载
- 3
部署到 GitHub Pages 需在仓库 Settings → Pages 把 Source 设为 GitHub Actions
- 4
新增文章放入 src/content/blog,新增项目编辑 src/data/projects.ts,新增相簿图片编辑 src/data/gallery.ts
- 5
演示图片、字体、图标等第三方素材需按各自许可单独核对,不能仅凭代码的 MIT 许可判断
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据
https://github.com/nagameTW/astro-flipside/blob/main/LICENSEhttps://github.com/nagameTW/astro-flipside/blob/main/README.mdPermission is hereby granted, free of charge
许可证原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-03。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 88 / 100
- 技术栈
- Astro
- 网站类型
- 作品集 · 博客
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-09-06
- 截图检查日期
- 2026-10-03
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 Astro。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
已完成服务器许可规则与 AI 来源核对;未经过人工编辑审核。
查看当时使用的来源资料
SHA-256: 5efcd3e4cd28673199ddb41f7fd1f2d9b01f0b6ce93eaa1f5b6818d82895bea7
2026-10-03T00:44:26.768Z
来源文件 / 仓库<div align="center">
[](https://github.com/nagameTW/astro-flipside/actions/workflows/ci.yml)
[](LICENSE)

[](https://tocas-ui.com/)

[](CONTRIBUTING.md)
<img src="docs/hero.jpg" alt="Flipside 頁面總覽,包含 Work 與 Life 兩面、相簿、文章列表、程式碼區塊與暗色主題">
<h3 align="center">Flipside</h3>
<p align="center">
翻個面,認識另一個你。
<br />
<br />
<a href="https://astro-flipside.vercel.app/">線上示範</a>
·
<a href="../../issues/new/choose">回報問題</a>
·
<a href="../../issues/new/choose">功能許願</a>
<br />
README in <strong>繁體中文</strong> / <a href="docs/README.en.md">English</a>
</p>
</div>
<details>
<summary>目錄</summary>
<ol>
<li><a href="#關於-flipside">關於 Flipside</a></li>
<li><a href="#lighthouse-分數">Lighthouse 分數</a></li>
<li><a href="#快速開始">快速開始</a></li>
<li><a href="#指令">指令</a></li>
<li><a href="#專案結構">專案結構</a></li>
<li><a href="#部署">部署</a></li>
<li><a href="#語言">語言</a></li>
<li><a href="#參與貢獻">參與貢獻</a></li>
<li><a href="#授權">授權</a></li>
<li><a href="#致謝">致謝</a></li>
</ol>
</details>
## 關於 Flipside
白天,你穿梭在信件與會議之中,用名片上的頭銜介紹自己;夜晚,你練琴、打球,或者換上一個只有同好才懂的 ID 上線。
這兩個都是真實的你,卻鮮少能在同一個空間裡並存。
多數個人網站受限於單一版型與敘事方式,逼得我們總得面臨取捨,該展現專業,還是分享熱愛?最終,往往只能妥協讓其中一面代表自己。
但是,何必妥協?
宛如一枚硬幣,正面是專業,反面是熱愛。兩面皆是真實的你,只需輕輕翻轉,就能讓訪客從截然不同的視角,認識更完整的你。
這就是「Flipside」,一款設計簡潔、且對中文排版高度友善的 Astro 主題。他源自我的個人網站,在剔除私人內容後,萃取了開發過程中累積的巧思,淬鍊成一個隨開即用的網站起點。希望幫助更多人,輕鬆打造出既能彰顯專業能力,又能盡情展現個人特色的專屬空間。
- [Astro](https://astro.build/) — 靜態輸出的網站框架
- [Tocas UI](https://tocas-ui.com/) — 為中文設計的 UI 框架
- [Expressive Code](https://expressive-code.com/) — 程式碼區塊
- [Pagefind](https://pagefind.app/) — 純靜態全文搜尋
## Lighthouse 分數
<p align="center">
<a href="https://pagespeed.web.dev/analysis?url=https%3A%2F%2Fastro-flipside.vercel.app%2F&form_factor=mobile">
<img width="720" alt="Lighthouse 行動裝置分數:效能、無障礙、最佳做法、SEO 皆為 100" src="docs/lighthouse-score.svg">
</a>
</p>
## 快速開始
**1. 建立你的 repo**
點上方 **Use this template**,或用 GitHub CLI:
```bash
gh repo create my-site --template nagameTW/astro-flipside --public --clone
```
**2. 本機執行**
```bash
cd my-site
npm install
npm run dev # 開 http://localhost:4321,改檔即時更新
```
**3. 填你的網址**
編輯 `src/config.ts` 最上面兩欄,照第 1 步的網址填:
```ts
site: "https://<帳號>.github.io",
base: "/my-site", // repo 叫 <帳號>.github.io 的話,這裡留 ""
```
**4. 開啟 GitHub Pages**
到 repo 的 **Settings → Pages**,把 **Source** 選成 **GitHub Actions**。設一次就好。
**5. 部署**
```bash
git add -A
git commit -m "first deploy"
git push # Actions 自動建置,約一分鐘後網站上線
```
之後 push 到 `main`,自動重新部署。
樣式或圖片全不見了?回第 3 步,檢查 `base`。內容怎麼加,看[新增內容](#新增內容)的三個範例。
Netlify、Vercel、Cloudflare Pages 也行。做法見 [Astro 部署指南](https://docs.astro.build/en/guides/deploy/)。
## 新增內容
- 文章 → `src/content/blog/`
- 專案 → `src/data/projects.ts`
- 相簿 → `src/data/gallery.ts`
存檔後,`npm run dev` 立刻更新。
**寫一篇文章**
在 `src/content/blog/` 新增 `.md` 或 `.mdx` 檔,圖片放在文章旁邊、用相對路徑引用:
```md
---
title: "文章標題"
description: "列表與搜尋結果顯示的摘要" # 可省略
pubDate: "2026-07-13"
updatedDate: "2026-07-20" # 可省略
heroImage: "./cover.jpg" # 可省略;文章頁大圖,兼列表縮圖
tags: ["life", "music"] # 可省略
draft: true # 草稿只在 dev 顯示,建置自動排除
---
內文就是一般 Markdown。相對路徑的圖片 `` 會自動轉
webp 並產生響應式尺寸;程式碼區塊、表格、目錄、標籤都是內建。
```
想看全部排版,對照範例文章「功能總覽」(`src/content/blog/kitchen-sink-zh.md`)最快。
**加一個專案**
在 `src/data/projects.ts` 的 `PROJECTS` 陣列加一筆:
```ts
{
name: "專案名稱",
description: "一句話說明。",
tech: ["Astro", "TypeScript"], // 顯示成技術標籤
url: "https://github.com/you/repo", // 整個區塊都連到這裡
img: cover, // 可省略;檔案頂部 import 的圖或 https URL
},
```
**加一張照片**
圖檔放進 `src/assets/gallery/`,在 `src/data/gallery.ts` import 後加一筆:
```ts
{
src: photo, // import 的圖或 https URL
alt: "給讀屏器與搜尋引擎的描述", // 必填
caption: "圖下與燈箱顯示的說明", // 可省略
},
```
陣列順序就是顯示順序。
## 指令
在專案根目錄執行:
| 指令 | 說明 |
| :---------------- | :----------------------------------------------- |
| `npm run dev` | 在 `localhost:4321` 啟動本機開發伺服器 |
| `npm run build` | 建置正式版網站到 `dist/`,再用 Pagefind 建立索引 |
| `npm run preview` | 在本機預覽正式版建置結果 |
| `npm run check` | 對專案做型別檢查 |
| `npm test` | 執行 `plugins/*.test.mjs` 的單元測試 |
| `npm run fmt` | 用 Prettier 格式化程式碼 |
## 專案結構
```
src/
├── components/ # Astro 元件:Navbar、Footer、FaceToggle、blocks/ 等
├── content/blog/ # ← 部落格文章(.md / .mdx)
├── data/ # ← 關於/Life 頁內容、相簿、作品集、獎盃牆
├── layouts/ # Layout.astro、BlogPost.astro
├── locales/ # en.ts/zh-TW.ts 介面字串字典
├── pages/ # 路由:首頁、關於、部落格、標籤、相簿、專案、RSS
├── styles/ # global.css
├── utils/ # 文章、時間軸、URL、對話框工具函式
└── config.ts # ← 網站設定的唯一來源
```
箭頭標示的地方是架設新站時真正要編輯的內容。
## 部署
`.github/workflows/deploy.yml`:每次 push 到 `main`,跑 `npm run check && npm run build`,再用 GitHub Pages 原生的 Actions 發布。設定一次就好:**Settings → Pages → Build and deployment → Source: GitHub Actions**。
`site` 和 `base` 要對上部署方式:
| 部署方式 | Repo 名稱 | `site` | `base` | 結果網址 |
| ---------------- | ------------------ | ---------------------------- | ---------------- | --------------------------------------- |
| Project page | 任意 | `"https://<user>.github.io"` | `"/<repo-name>"` | `https://<user>.github.io/<repo-name>/` |
| 使用者/組織首頁 | `<user>.github.io` | `"https://<user>.github.io"` | `""` | `https://<user>.github.io/` |
### 部署到 Vercel
匯入 repo 就好,設定不用動。
到 [vercel.com](https://vercel.com) 用 GitHub 登入,**Add New → Project**,匯入 repo,按 **Deploy**。
之後每次 push 到 `main` 自動重新部署,開 PR 會附一個預覽網址。純靜態輸出,免費的 Hobby 方案就夠,不需要任何 adapter。
## 語言
預設 `"zh-TW"`。想改英文的話,把 `src/config.ts` 的 `locale` 設成 `"en"` 即可。
字典在 `src/locales/`。要加新語言,複製 `en.ts` 的 key,照著填就行。
## 參與貢獻
歡迎 issue 和 PR。回報問題、許願功能請走 [issue 表單](../../issues/new/choose)。小修正直接開 PR;大改動則先開 issue 聊聊方向。
開發環境與慣例,見 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 授權
MIT。詳見 [LICENSE](LICENSE)。
## 致謝
底層是 [Tocas UI](https://tocas-ui.com/)。部落格骨架依循 Astro 官方 blog starter。
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

astrowind
⭕️ AstroWind: A free template using Astro v7 and Tailwind CSS v4. Astro starter theme.
Astro · 博客

astro-paper
A minimal, accessible and SEO-friendly Astro blog theme.
Astro · 博客

fuwari
✨A static blog template built with Astro.
Astro · 博客

Firefly
Firefly 是一款基于 Astro 的静态博客主题,由 CuteLeaf 在 saicaca 的 Fuwari 模板基础上二次开发,主打清新美观的视觉风格。
Astro · 博客

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 · 作品集
