Architecture

更新于 2026年7月29日 02:31
查看源文件

Packages

  • web: React + Vite 客户端。页面路由位于 web/src/app,页面相关数据访问集中在对应路由的 api.ts
  • api: Elysia 服务端。api/src/service 负责 HTTP 入口,复杂模块进一步拆成 policy、repository、command/use-case。
  • shared/config: 运行时配置与环境解析。浏览器安全入口和 Node 专用子路径分开导出。
  • shared/api: 前后端共享 DTO 与序列化契约。
  • shared/type: 后端推导类型出口,供 Eden 和 Better Auth 类型在前端使用。
  • shared/ui: 跨页面、跨端复用的 UI 组件。

Frontend Rules

  • 路由策略统一为无 locale 前缀 URL,语言状态由 LocaleProvider 持有。
  • 页面级业务数据访问集中在 web/src/app/**/api.ts,组件尽量只处理展示和交互。
  • 页面私有组件放在对应路由目录的 components/ 下;首页共用区块组件集中在 web/src/app/components/
  • 站内 API 调用统一通过 web/src/lib/api.ts,避免组件直接裸调 Eden mutation。

Backend Rules

  • 权限判断优先放在显式 policy / command 层,而不是依赖 Prisma 隐式扩展。
  • repository 负责查询与持久化,command/use-case 负责业务编排,service 文件负责 HTTP 层。
  • 对外部依赖的聚合能力优先放在后端,例如资源 release 信息通过 api/src/lib/resource-releases.ts 收口。

Testing Baseline

  • API 权限与 command 测试位于 api/src/service/*.test.ts
  • 核心前端 helper 测试位于 web/src/lib/*.test.ts
  • 轻量 smoke 脚本位于 scripts/smoke-routes.ts,验证前后端启动和关键公共路由可访问。
  • 浏览器级 smoke 脚本位于 scripts/e2e-smoke.ts,验证受保护路由重定向和旧 locale 链接收敛。

Quality Commands

bun run lint
bun run typecheck
bun run test
bun run test:smoke
bun run test:e2e
bun run check