Skip to content

项目结构

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.json

Logger (packages/logger)

packages/logger/
├── src/
│   └── index.ts         # Logger 实现
└── package.json

代码组织原则

分层架构

  • RoutesServicesDatabase
  • 路由层:只处理请求/响应,调用 Service
  • 服务层:业务逻辑,不直接处理 HTTP

共享代码

  • 类型定义:packages/shared
  • 工具函数:packages/shared/lib
  • 日志工具:packages/logger

测试

  • 测试文件与源码结构对应
  • 使用 __tests__ 目录
  • 命名:*.test.ts*.spec.ts

Released under the MIT License.