项目结构
Monorepo 结构
fullstackpack/
├── apps/
│ ├── web/ # Web 应用(React + Vite)
│ ├── auth-portal/ # 认证门户(统一登录入口)
│ ├── front-template/ # 前端应用模板
│ └── server/ # 后端服务(Hono + Cloudflare Workers)
├── packages/
│ ├── logger/ # 通用日志包
│ └── shared/ # 共享类型和 schemas
├── apps/docs/ # 文档站点(VitePress)
├── pnpm-workspace.yaml # pnpm workspace 配置
└── package.json # 根 package.json应用结构
Server (apps/server)
apps/server/
├── src/
│ ├── config/ # 配置模块
│ ├── db/ # Prisma client
│ ├── lib/ # 工具函数
│ ├── middlewares/ # Hono 中间件
│ ├── routes/v1/ # API 路由
│ ├── services/ # 业务逻辑层
│ └── __tests__/ # 测试文件
├── prisma/
│ └── schema.prisma # 数据库 schema
└── wrangler.toml # Cloudflare Workers 配置Web (apps/web)
apps/web/
├── src/
│ ├── components/ # React 组件
│ │ ├── auth/ # 认证相关组件
│ │ ├── layouts/ # 布局组件
│ │ └── ui/ # shadcn/ui 组件
│ ├── hooks/queries/ # React Query hooks
│ ├── lib/ # 工具函数
│ ├── pages/ # 页面组件
│ ├── routes/ # 路由配置
│ └── stores/ # Zustand stores
└── vite.config.ts # Vite 配置Auth Portal (apps/auth-portal)
apps/auth-portal/
├── src/
│ ├── components/ # React 组件
│ ├── pages/ # 页面(主要是 Auth.tsx)
│ ├── routes/ # 路由配置
│ └── stores/ # 认证状态管理
└── vite.config.ts包结构
Shared (packages/shared)
packages/shared/
├── src/
│ ├── schemas/ # Zod schemas
│ ├── types/ # TypeScript 类型
│ ├── lib/ # 工具函数(如 auth 工具)
│ └── errors/ # 错误码定义
└── package.jsonLogger (packages/logger)
packages/logger/
├── src/
│ └── index.ts # Logger 实现
└── package.json代码组织原则
分层架构
- Routes → Services → Database
- 路由层:只处理请求/响应,调用 Service
- 服务层:业务逻辑,不直接处理 HTTP
共享代码
- 类型定义:
packages/shared - 工具函数:
packages/shared/lib - 日志工具:
packages/logger
测试
- 测试文件与源码结构对应
- 使用
__tests__目录 - 命名:
*.test.ts或*.spec.ts