Go to file
SepComet 187686c94c Make the corner gallery resolve gallery files reliably
Use the project root as the anchor so the homepage sticker gallery survives Astro build and still randomizes from public/images/gallery.

Constraint: Keep behavior unchanged except for build-time discovery.
Rejected: import.meta.url-based directory lookup | it failed in production build.
Confidence: high
Scope-risk: narrow
Directive: Preserve the gallery scan as a static build-time concern unless the deployment model changes.
Tested: npm run build; verified dist/index.html contains corner-gallery and gallery image paths
Not-tested: browser repaint timing in a live session
2026-05-07 14:34:08 +08:00
.codex/skills/ui-ux-pro-max init 2026-05-04 21:56:20 +08:00
design-system/sepcomet init 2026-05-04 21:56:20 +08:00
docker/nginx Add Docker Compose deployment setup 2026-05-06 10:42:50 +08:00
docs docs: add cron deploy script and ignore local runtime artifacts 2026-05-06 19:23:17 +08:00
public init 2026-05-04 21:56:20 +08:00
scripts 优化首页 Gitea Activity 展示 2026-05-07 09:09:29 +08:00
src Make the corner gallery resolve gallery files reliably 2026-05-07 14:34:08 +08:00
.dockerignore Add Docker Compose deployment setup 2026-05-06 10:42:50 +08:00
.env.example Make site URLs environment-driven 2026-05-06 11:00:06 +08:00
.gitignore docs: add cron deploy script and ignore local runtime artifacts 2026-05-06 19:23:17 +08:00
Dockerfile Make site URLs environment-driven 2026-05-06 11:00:06 +08:00
README.md docs: add cron deploy script and ignore local runtime artifacts 2026-05-06 19:23:17 +08:00
REQUIREMENTS.md feat: add build-time content sync scaffold 2026-05-05 09:04:11 +08:00
TODO.md Add Docker Compose deployment setup 2026-05-06 10:42:50 +08:00
astro.config.mjs Make site URLs environment-driven 2026-05-06 11:00:06 +08:00
docker-compose.yml Make site URLs environment-driven 2026-05-06 11:00:06 +08:00
package-lock.json Add schema validation and sync metadata UI 2026-05-06 09:47:00 +08:00
package.json Add structured rebuild entrypoint for AstrBot 2026-05-06 10:11:16 +08:00
tsconfig.json init 2026-05-04 21:56:20 +08:00

README.md

personal-homepage

一个基于 Astro 的个人主页项目,定位为:

静态站点 + 构建时数据同步层

运行时对外提供纯静态页面;构建阶段由脚本从 Gitea / Seafile 拉取数据,生成本地 JSON再交给 Astro 渲染。

当前能力

  • Astro 静态站点
  • Markdown 日志内容
  • 项目 / 分享 / Gitea 活动页
  • 构建时同步 Gitea / Seafile 数据
  • generated JSON schema 校验
  • 统一重建入口 npm run rebuild
  • 结构化错误码与 REBUILD_RESULT 输出,便于 AstrBot / cron 调用

快速开始

1. 安装依赖

npm install

2. 配置环境变量

复制示例文件:

cp .env.example .env

然后填写:

  • PUBLIC_SITE_URL
  • PUBLIC_GITEA_URL
  • PUBLIC_GITHUB_URL
  • PUBLIC_BLOG_URL
  • PUBLIC_GITEA_USERNAME
  • GITEA_BASE_URL
  • GITEA_TOKEN
  • GITEA_USERNAME
  • SEAFILE_BASE_URL
  • SEAFILE_TOKEN

如果某些远端还没接好,也可以先保留为空;系统会按当前策略回退到 seed data。 如果正式域名还没下来,PUBLIC_SITE_URL / PUBLIC_BLOG_URL 也可以先留空。

3. 本地开发

npm run dev

4. 手动同步内容

npm run content:sync

5. 完整重建

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.mdAstrBot / cron 重建触发与错误码约定
  • docs/content-sync-guide.md:环境变量、映射文件、同步脚本职责、故障排查
  • docs/docker-deploy.mdDocker / Compose 部署说明
  • docs/linux-cron-deploy.md:宿主机定时同步 log、重建 homepage、刷新 Docker 的脚本说明
  • docs/ui-design-spec.mdUI 设计规范

内容入口

日志

  • 目录:src/content/logs/*.md

项目种子数据

  • 文件:src/content/projects/index.json

分享种子数据

  • 文件:src/content/shares/index.json

Seafile 映射

  • 文件:src/content/seafile/index.json

推荐的内容维护边界

当前更推荐把下面这些文件视为 AstrBot 可维护输入文件

  • src/content/projects/index.json
  • src/content/seafile/index.json
  • src/content/shares/index.json

也就是说:

  • 你在 AstrBot 里维护项目 / 分享 / 下载配置
  • AstrBot 负责更新这些 JSON
  • 仓库只负责在构建时读取并消费它们

这样比手工直接改 JSON 更适合日常维护,也不需要额外引入数据库或在线后台。

统一重建入口

适合 AstrBot / cron 调用的命令:

npm run rebuild

命令结束前会输出一行结构化结果:

REBUILD_RESULT {...}

并返回明确退出码,便于通知系统判断成功 / 失败阶段。

详细约定见:

  • docs/rebuild-trigger-spec.md

Docker / Compose 部署

最小启动方式:

docker compose up -d --build

默认端口:

http://localhost:8080

详细说明见:

  • docs/docker-deploy.md

当前实现边界

  • 当前默认策略是失败时回退 seed data而不是保留上一轮 generated 文件
  • SEAFILE_MIRROR_DOWNLOADS=true 目前只保留开关,尚未真正实现文件镜像
  • npm run rebuild 当前只做同步和构建,还不包含部署阶段