Appearance
JY 项目架构
仓库结构
jy_prj/
├── jy-site/ # 公开博客(SvelteKit 5 + adapter-static)
├── jy-admin/ # 管理端(Next.js 15 App Router + Ant Design)
├── docs/ # VitePress 文档站
└── .cursor/skills/ # 编码规范类 skill(可选链到 docs/skills/)三个应用独立构建、独立部署,共用 MySQL 数据库 blog_site。
线上映射
| 应用 | 域名 | 服务器路径 | 运行时 |
|---|---|---|---|
| jy-site | https://jianyi.my | /opt/web/jysite | 无 Node(纯静态) |
| jy-admin | https://admin.jianyi.my | /opt/web/jy-admin | Node :5174 + systemd |
| docs | https://doc.jianyi.my | /opt/web/doc.jysite | 无 Node(纯静态) |
测试机:154.89.148.95,SSH 别名 jy-test,端口 3337。
核心数据流
text
jy-admin 写入 MySQL(articles、categories、tags、site_settings)
↓
jy-site dev:每次请求查库(实时)
jy-site 生产:pnpm build:static 时查库,烘焙进 HTML/JSON
↓
build/ → GitHub Actions 或手动 tar/scp → Nginx 静态目录生产博客没有 Node。改数据库不会自动改线上 HTML,必须重新构建静态站。
静态边界(必须理解)
| 能力 | jy-site 生产 | jy-admin |
|---|---|---|
| 读 MySQL | 仅构建时 | 运行时 |
| Server Actions / API | 无 | 有(登录、触发构建) |
| Session | 无 | iron-session |
| 部署物 | build/ 目录 | standalone server.js 包 |
jy-site 的 /api/search 等仅在 dev 可用;生产用预生成的 search-index.json。
技术栈速查
| 子项目 | 框架 | 包管理 | 生产构建 |
|---|---|---|---|
| jy-site | SvelteKit 5 | pnpm | pnpm build:static |
| jy-admin | Next.js 15 | pnpm | pnpm build → .next/standalone |
| docs | VitePress | pnpm | pnpm build → .vitepress/dist |
Node 22.22.1(.nvmrc),pnpm 10.15.0。
本地开发端口
| 服务 | 端口 | 说明 |
|---|---|---|
| jy-admin | 5174 | 管理端 |
| jy-site | 5175(5173 被占用时) | 博客;勿与别的项目混淆 |
| docs | VitePress 默认 | pnpm dev |
关键文件入口
| 用途 | 路径 |
|---|---|
| 静态适配器 | jy-site/svelte.config.js |
| 完整静态构建 | jy-site/scripts/build-static.ts |
| 文章 Server Action | jy-admin/lib/actions/article.ts |
| 触发站点构建 API | jy-admin/app/api/publish/route.ts |
| GitHub Actions 部署 | jy-site/.github/workflows/deploy-jy-site.yml |
| 管理端 standalone 配置 | jy-admin/next.config.ts |
延伸阅读
- 人类文档:项目总览
- 发布链路:同目录 jy-publish-flow/SKILL.md