Astro作品集博客

astro-flipside — Astro 作品集模板

作者 nagameTW

一款基于 Astro 的中文友好型博客与作品集主题,用 Work 与 Life 双面结构在同一站点呈现专业与个人内容。

看看你的网站会是什么样

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

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

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

全部页面与视图 3

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

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

值得关注的模板亮点

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

01

Work 与 Life 双面结构,在同一站点内切换专业与个人内容视角

02

默认繁体中文界面,字典集中在 src/locales,可切换英文或扩展其他语言

03

博客文章支持 Markdown 与 MDX,含草稿、标签、封面图与更新日期等前置字段

04

项目、相簿、关于页内容分别由 src/data 下的数据文件驱动

05

构建后用 Pagefind 生成纯静态全文搜索索引

06

提供 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 许可的免费版本,免费范围仅指该版本代码;演示图片、字体、图标等第三方素材需按各自许可单独核对,域名、托管等外部服务可能另外收费。主题的样式风格、具体组件清单与可配置项以仓库实际文件为准,本介绍不展开未经资料确认的细节。

Astro作品集博客

适合你的项目吗?

适用场景

  • 需要同时展示职业项目与个人爱好、又不想分成两个网站的个人主页
  • 以中文写作为主、希望界面文案可切换或扩展语言的博客
  • 用数据文件维护项目列表与相簿、文章用 Markdown 撰写的作品集站点
  • 希望部署到 GitHub Pages 或 Vercel 等静态托管平台的 Astro 项目

适合人群

  • 熟悉 Markdown 与基础前端配置、想快速搭建个人站点的开发者
  • 需要中文排版与多语言界面切换的博客作者
  • 希望把作品集与生活记录放在同一站点的创作者

上手与定制指南

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

  1. 1

    通过 GitHub 的 Use this template 或 gh repo create --template 创建仓库后执行 npm install 与 npm run dev

  2. 2

    编辑 src/config.ts 顶部的 site 与 base,使其与部署方式匹配,否则样式和图片可能无法加载

  3. 3

    部署到 GitHub Pages 需在仓库 Settings → Pages 把 Source 设为 GitHub Actions

  4. 4

    新增文章放入 src/content/blog,新增项目编辑 src/data/projects.ts,新增相簿图片编辑 src/data/gallery.ts

  5. 5

    演示图片、字体、图标等第三方素材需按各自许可单独核对,不能仅凭代码的 MIT 许可判断

查看仓库使用说明

授权与来源资料

使用条件与限制

免费使用 · 保留许可声明

本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。

使用时需要遵守

  • 允许免费使用、修改、商用和分发该版本代码。
  • 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
  • 代码按现状提供;担保与责任限制以原许可证及适用法律为准。

额外费用与待核对事项

  • 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
  • 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据

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">

[![CI](https://img.shields.io/github/actions/workflow/status/nagameTW/astro-flipside/ci.yml?label=CI&style=for-the-badge)](https://github.com/nagameTW/astro-flipside/actions/workflows/ci.yml)
[![License: MIT](https://img.shields.io/badge/license-MIT-2F3741?style=for-the-badge)](LICENSE)
![Astro](https://img.shields.io/badge/Astro-7-BC52EE?style=for-the-badge&logo=astro&logoColor=white)
[![Tocas UI](https://img.shields.io/badge/Tocas_UI-1F2430?style=for-the-badge)](https://tocas-ui.com/)
![i18n](https://img.shields.io/badge/i18n-%E7%B9%81%E9%AB%94%E4%B8%AD%E6%96%87%20%7C%20English-2F3741?style=for-the-badge)
[![PRs welcome](https://img.shields.io/badge/PRs-welcome-2F3741?style=for-the-badge)](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。相對路徑的圖片 `![說明](./photo.jpg)` 會自動轉
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。
反馈内容错误

看看同类模板

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