项目结构
了解 IAM 项目的结构对于高效开发至关重要。本项目使用 Turborepo 管理 monorepo。
Monorepo 结构
Section titled “Monorepo 结构”IAM 项目使用 Turborepo 管理 monorepo,结构如下:
IAM/├── apps/ # 应用程序│ ├── web/ # 前端应用 (Next.js 16)│ │ ├── src/│ │ │ ├── app/ # Next.js App Router│ │ │ ├── components/ # 组件库 (shadcn/ui + 业务组件)│ │ │ └── lib/ # trpc 客户端及核心工具│ │ └── package.json│ ├── server/ # 后端 API (Hono + Node.js)│ │ ├── src/│ │ │ └── index.ts # 服务入口及中间件配置│ │ └── package.json│ └── docs/ # 文档站点 (Astro Starlight)│ └── src/│ └── content/ # Markdown/MDX 文档内容├── packages/ # 共享模块 (pnpm workspace)│ ├── api/ # tRPC 路由与业务逻辑定义│ │ ├── src/│ │ │ ├── routers/ # API 路由│ │ │ ├── context.ts # 后端上下文 (包含 Session)│ │ │ └── index.ts # tRPC 初始化│ │ └── package.json│ ├── auth/ # Better Auth 核心配置│ │ ├── src/│ │ │ ├── index.ts # 插件及适配器配置│ │ │ └── wecom.ts # 企业微信集成│ │ └── package.json│ ├── db/ # Drizzle ORM 数据库层│ │ ├── src/│ │ │ ├── schema/ # 表定义 (auth, oauth, sessions 等)│ │ │ └── index.ts # 数据库连接│ │ └── package.json│ ├── redis/ # Upstash Redis 客户端│ │ ├── src/│ │ │ └── index.ts # Redis 实例配置│ │ └── package.json│ ├── env/ # 全局环境变量管理 (T3 Env)│ │ ├── src/│ │ │ ├── server.ts # 服务端密钥│ │ │ └── web.ts # 客户端公开变量│ │ └── package.json│ └── config/ # 共享构建配置│ └── tsconfig.base.json├── .changeset/ # Changesets 变更记录与版本管理├── turbo.json # Turborepo 管道配置├── pnpm-workspace.yaml # pnpm workspace 配置└── package.json # 根目录依赖与脚本各包职责说明
Section titled “各包职责说明”@IAM/api
Section titled “@IAM/api”位置: packages/api/
职责:
- 包含所有 tRPC 路由和业务逻辑
- 定义公共和受保护的过程
- 处理 API 请求和响应
关键文件:
src/routers/: tRPC 路由定义src/context.ts: tRPC 上下文创建src/index.ts: tRPC 初始化和导出
@IAM/auth
Section titled “@IAM/auth”位置: packages/auth/
职责:
- Better-Auth 的配置和初始化
- 认证适配器设置(Drizzle)
- 认证插件配置
关键文件:
src/index.ts: Better-Auth 配置
@IAM/db
Section titled “@IAM/db”位置: packages/db/
职责:
- Drizzle ORM 数据库架构定义
- 表结构和关系定义
- 数据库连接配置
关键文件:
src/schema/: 数据库表定义src/index.ts: 数据库连接导出
@IAM/redis
Section titled “@IAM/redis”位置: packages/redis/
职责:
- Upstash Redis 客户端配置
- 提供 Redis 连接实例
- 用于会话管理和缓存
关键文件:
src/index.ts: Redis 客户端导出
@IAM/env
Section titled “@IAM/env”位置: packages/env/
职责:
- 使用
@t3-oss/env-core管理环境变量 - 类型安全的环境变量验证
- 服务器和客户端环境变量分离
关键文件:
src/server.ts: 服务器环境变量src/web.ts: 客户端环境变量
@IAM/config
Section titled “@IAM/config”位置: packages/config/
职责:
- 共享的 TypeScript 配置
- 基础 tsconfig 设置
关键文件:
tsconfig.base.json: 基础 TypeScript 配置
apps/web
Section titled “apps/web”Next.js 前端应用,包含:
- 用户界面组件
- 页面路由
- tRPC 客户端配置
apps/server
Section titled “apps/server”Hono 后端服务器,包含:
- API 路由配置
- 中间件设置
- tRPC 服务器集成
apps/docs
Section titled “apps/docs”Astro Starlight 文档站点,包含:
- 项目文档
- API 参考
- 使用指南
apps/web ──┐ ├──> @IAM/api ──> @IAM/auth ──> @IAM/dbapps/server ─┘ ├──> @IAM/redis └──> @IAM/env