个人资料、导航、社交链接和首页指标集中在 src/config.ts 单文件配置
folio-astro — Astro 作品集模板
作者 fazleyrabby
基于 Astro 的极简作品集与博客主题,用 Markdown 内容集合管理博客、项目与工作经历,并提供单文件配置与多套可切换主题。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 3
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
博客、项目、工作经历使用 Markdown 内容集合,字段结构由 content.config.ts 定义
内置 Light、Dark、Brutal、Mono 四套主题,可在运行时切换
项目条目填写 problem 或 highlights 后自动生成详情页
文章正文使用 @tailwindcss/typography 排版,代码块由 Shiki 高亮
静态输出,附带 GitHub Pages 的 Actions 部署工作流
模板详细介绍
Folio 是一个以内容为先的作品集与博客主题,使用 Astro 与 Tailwind CSS 构建。它把个人资料、导航、社交链接和首页指标集中在 src/config.ts 一个文件里,博客、项目案例和工作经历则分别放在 src/content 下的 Markdown 内容集合中,并由 src/content.config.ts 定义各自的字段结构。项目条目如果填写了 problem 或 highlights,会生成对应的详情页。
主题内置 Light、Dark、Brutal、Mono 四套外观,通过右上角的 ThemeIcon 组件在运行时切换,默认主题可在 MainLayout.astro 的初始化脚本中调整。文章正文使用 @tailwindcss/typography 排版,代码块由 Shiki 高亮;动画由 GSAP 与 Lenis 提供,可以通过移除相关引用关闭。站点为静态输出,构建产物在 dist 目录,仓库包含 GitHub Pages 的 Actions 工作流,也可部署到 Vercel、Netlify 或 Cloudflare Pages。
使用前需要把示例 Markdown 内容替换为自己的内容,并更新 config.ts 与 astro.config.mjs 中的站点地址。代码采用 MIT 许可,可免费用于个人和商业用途,但演示图片、字体、图标等第三方素材需单独核对许可,域名、托管等外部服务可能产生费用。
适合你的项目吗?
适用场景
- 搭建个人作品集网站,集中展示项目案例与工作经历
- 在作品集之外附带一个用 Markdown 写作的博客
- 需要多套配色外观并允许访客自行切换的站点
- 部署到 GitHub Pages、Vercel、Netlify 或 Cloudflare Pages 的静态站点
适合人群
- 希望用 Markdown 管理内容的开发者、设计师和写作者
- 偏好单文件配置、不想维护复杂后台的个人站点作者
- 需要作品集与博客合并为一个静态站点的用户
- 接受自行替换示例内容与图片的 Astro 使用者
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
需要 Node 18.17+,使用 pnpm(或 npm/yarn)安装依赖,pnpm dev 启动本地开发
- 2
在 src/config.ts 中替换姓名、简介、社交链接、导航和指标等占位数据
- 3
更新 astro.config.mjs 中的 site 地址,以匹配 sitemap 与 canonical URL
- 4
将头像放到 public/avatar.png,或修改 CONFIG.hero.avatar 指向其他路径
- 5
上线前删除 src/content/blog、projects、experiences 中的示例 Markdown 并替换为自己的内容
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
- 作者仅表示使用该主题时回链是“感谢但非必需”,不构成强制署名或回链义务,可自由使用。
查看原文依据
Permission is hereby granted, free of charge
许可证原文
https://github.com/fazleyrabby/folio-astro/blob/main/LICENSEhttps://github.com/fazleyrabby/folio-astro/blob/main/README.mdIf you use this theme, a link back is appreciated but not required.
README 原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-13。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 85 / 100
- 技术栈
- Astro
- 网站类型
- 作品集 · 博客
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-06-06
- 截图检查日期
- 2026-10-13
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 Astro。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
审核声明: [email protected] · 2026-10-13
查看当时使用的来源资料
SHA-256: 65501f041f44e4c6ad313c1e35e689b15dfb0eba30723c2540ee334634e9d085
2026-10-13T00:30:57.189Z
来源文件 / 仓库# Folio — Minimalist Astro Portfolio Theme
A content-first portfolio & blog theme built with **Astro 5** and **Tailwind CSS**. Editorial typography, four built-in themes, and a single config file. Designed for developers, designers, and writers who want a premium aesthetic without the bloat.
[**Live Demo**](https://folio.fazleyrabbi.xyz) · [**Report Issue**](https://github.com/fazleyrabby/folio-astro/issues)

## Contents
- [Features](#features)
- [Quick Start](#quick-start)
- [Project Structure](#project-structure)
- [Customization](#customization)
- [Content Collections](#content-collections)
- [Themes](#themes)
- [Deployment](#deployment)
- [License](#license)
## Features
- **Astro 5** — zero JS by default, content collections, type-safe frontmatter.
- **Tailwind CSS 3** — utility-first styling, easy to override.
- **Four themes** — Light, Classic Dark, Brutal, Mono. Switchable at runtime.
- **Content collections** — Blog, Projects, and Work Experience as markdown.
- **Single-file config** — name, bio, socials, nav, metrics all live in `src/config.ts`.
- **Pre-styled prose** — `@tailwindcss/typography` + Shiki syntax highlighting (`github-light` / `nord`).
- **Smooth animations** — GSAP + Lenis (opt-out by removing imports).
- **SEO ready** — sitemap, canonical URLs, OpenGraph fields in `<Head>`.
- **One-click GitHub Pages deploy** — Actions workflow included.
- **Responsive & accessible** — mobile menu, keyboard nav, semantic HTML.
## Quick Start
Requires Node 18.17+ and pnpm (or npm/yarn).
```bash
git clone https://github.com/fazleyrabby/folio-astro.git my-portfolio
cd my-portfolio
pnpm install
pnpm dev
```
Open `http://localhost:4321`.
### Scripts
| Command | Action |
|---------|--------|
| `pnpm dev` | Start dev server with hot reload |
| `pnpm build` | Build production site to `./dist/` |
| `pnpm preview` | Preview the build locally |
## Project Structure
```
src/
├── components/ # Hero, Projects, Experience, LatestPosts, ContactCTA…
├── content/ # Markdown content
│ ├── blog/ # Blog posts
│ ├── projects/ # Project case studies
│ ├── experiences/ # Work experience entries
│ ├── about.md # About page body
│ └── uses.md # Uses page body
├── layouts/ # MainLayout, Head, Nav, Footer
├── lib/ # url() helper for base-path-safe links
├── pages/ # Routes
├── scripts/ # animations.js (GSAP/Lenis)
├── styles/ # global.css (theme tokens + utilities)
├── config.ts # ← all personal data lives here
└── content.config.ts# Collection schemas
```
## Customization
Open `src/config.ts` and replace placeholder data:
```ts
export const CONFIG = {
name: "Your Name",
title: "Full-Stack Developer",
tagline: "I build delightful, fast, and accessible web experiences.",
bio: "Short bio shown in the hero section.",
email: "[email protected]",
available: true,
social: {
github: "https://github.com/yourusername",
linkedin: "https://linkedin.com/in/yourusername",
twitter: null,
codepen: null,
youtube: null,
},
nav: [
{ label: "Work", href: "/#projects" },
{ label: "Experience", href: "/#experience" },
{ label: "Posts", href: "/blog/" },
{ label: "About", href: "/about/" },
{ label: "Uses", href: "/uses/" },
],
hero: {
greeting: "Hi, I'm",
avatar: "/avatar.png", // drop image in public/
resumeLabel: "Resume",
viewProjectsLabel: "View Projects",
},
metrics: [
{ value: "5+", label: "Years" },
{ value: "30+", label: "Projects" },
],
site: {
url: "https://your-domain.com",
description: "Portfolio of <Your Name>",
},
};
```
Also update `astro.config.mjs` → `site` to match your domain (for sitemap/canonical URLs).
### Replace the avatar
Drop your image at `public/avatar.png` (or update `CONFIG.hero.avatar`).
### Delete demo content
Before launching, remove the example markdown files in `src/content/blog/`, `src/content/projects/`, and `src/content/experiences/`. Replace with your own.
## Content Collections
Each collection has a strict schema defined in `src/content.config.ts`.
### Blog (`src/content/blog/*.md`)
```yaml
---
title: "Post title"
description: "Short summary used in lists and meta tags"
publishedAt: "2026-01-15" # ISO date
tags: ["astro", "web-dev"] # optional
cover: "/covers/post.jpg" # optional
---
Markdown body…
```
### Projects (`src/content/projects/*.md`)
```yaml
---
title: "Project name"
description: "One-line summary"
type: "Web App" # optional
thumbnail: "/projects/img.jpg" # optional
live: "https://demo.example.com"
github: "https://github.com/..."
tech: ["Astro", "Tailwind"]
status: "Live" # optional
position: 1 # optional ordering
period: "2025"
role: "Designer & Developer"
highlights: ["Bullet 1", "Bullet 2"]
problem: "What problem did this solve?"
solution: "How did you solve it?"
scope: ["UX", "Frontend", "Backend"]
---
```
If `problem` or `highlights` is set, the project gets a detail page at `/projects/<slug>`.
### Experiences (`src/content/experiences/*.md`)
```yaml
---
title: "Company Name"
role: "Senior Engineer"
from: "Jan 2023"
to: "Present"
skills: "TypeScript, React, PostgreSQL"
link: "https://company.com" # optional
timeline: "2023-01-01" # sort key (newest first)
---
- Contribution one
- Contribution two
```
## Themes
Four built-in themes, switched via the `ThemeIcon` component (top-right):
| Theme | `data-theme` | Vibe |
|-------|--------------|------|
| Light | *(default)* | Warm minimalist |
| Dark | `dark` (class) | Editorial dark |
| Brutal | `brutal` | Neo-brutalist (yellow accent, hard shadows) |
| Mono | `mono` | Black & white, terminal-inspired |
To set a default theme, edit the init script in `src/layouts/MainLayout.astro`.
## Deployment
The site is static (`output: "static"`) — deploy anywhere.
```bash
pnpm build # outputs to ./dist/
```
### GitHub Pages
This repo ships with `.github/workflows/deploy.yml`.
1. In your repo: **Settings → Pages → Build and deployment → Source → GitHub Actions**.
2. Push to `main`. The workflow builds and publishes.
3. (Optional) Custom domain: edit `public/CNAME` and update `astro.config.mjs` `site`. For project-page hosting (no custom domain), add `base: "/<repo-name>"` to `astro.config.mjs`.
### Vercel / Netlify / Cloudflare Pages
Build command: `pnpm build` · Output dir: `dist`. No further config needed.
## Author
Built by **[Md. Fazley Rabbi](https://github.com/fazleyrabby)** — [folio.fazleyrabbi.xyz](https://folio.fazleyrabbi.xyz)
If you use this theme, a link back is appreciated but not required.
## License
[MIT](./LICENSE) — free for personal and commercial use.
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

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