personal-homepage/README.md

148 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# personal-homepage
一个基于 Astro 的个人主页项目,定位为:
> **静态站点 + 构建时数据同步层**
运行时对外提供纯静态页面;构建阶段由脚本从 Gitea / Seafile 拉取数据,生成本地 JSON再交给 Astro 渲染。
## 当前能力
- Astro 静态站点
- Markdown 日志内容
- 项目 / 分享 / Gitea 活动页
- 构建时同步 Gitea / Seafile 数据
- generated JSON schema 校验
- 统一重建入口 `npm run rebuild`
- 结构化错误码与 `REBUILD_RESULT` 输出,便于 AstrBot / cron 调用
## 快速开始
### 1. 安装依赖
```bash
npm install
```
### 2. 配置环境变量
复制示例文件:
```bash
cp .env.example .env
```
然后填写:
- `GITEA_BASE_URL`
- `GITEA_TOKEN`
- `GITEA_USERNAME`
- `SEAFILE_BASE_URL`
- `SEAFILE_TOKEN`
如果某些远端还没接好,也可以先保留为空;系统会按当前策略回退到 seed data。
### 3. 本地开发
```bash
npm run dev
```
### 4. 手动同步内容
```bash
npm run content:sync
```
### 5. 完整重建
```bash
npm run rebuild
```
该命令会执行:
1. `npm run content:sync`
2. `npm run build`
## 常用命令
| 命令 | 用途 |
|------|------|
| `npm run dev` | 本地开发 |
| `npm run content:sync` | 仅执行内容同步 |
| `npm run build` | 仅执行 Astro 构建 |
| `npm run rebuild` | 同步 + 构建,适合作为 AstrBot / cron 统一入口 |
| `npm run preview` | 本地预览构建结果 |
## 文档索引
- `REQUIREMENTS.md`:需求与范围
- `TODO.md`:当前推进计划
- `docs/rebuild-trigger-spec.md`AstrBot / cron 重建触发与错误码约定
- `docs/content-sync-guide.md`:环境变量、映射文件、同步脚本职责、故障排查
- `docs/docker-deploy.md`Docker / Compose 部署说明
- `docs/ui-design-spec.md`UI 设计规范
## 内容入口
### 日志
- 目录:`src/content/logs/*.md`
### 项目种子数据
- 文件:`src/content/projects/index.json`
### 分享种子数据
- 文件:`src/content/shares/index.json`
### Seafile 映射
- 文件:`src/content/seafile/index.json`
## 统一重建入口
适合 AstrBot / cron 调用的命令:
```bash
npm run rebuild
```
命令结束前会输出一行结构化结果:
```text
REBUILD_RESULT {...}
```
并返回明确退出码,便于通知系统判断成功 / 失败阶段。
详细约定见:
- `docs/rebuild-trigger-spec.md`
## Docker / Compose 部署
最小启动方式:
```bash
docker compose up -d --build
```
默认端口:
```text
http://localhost:8080
```
详细说明见:
- `docs/docker-deploy.md`
## 当前实现边界
- 当前默认策略是失败时回退 seed data而不是保留上一轮 generated 文件
- `SEAFILE_MIRROR_DOWNLOADS=true` 目前只保留开关,尚未真正实现文件镜像
- `npm run rebuild` 当前只做同步和构建,还不包含部署阶段