Skip to content

项目结构

了解 IAM 项目的结构对于高效开发至关重要。本项目使用 Turborepo 管理 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 # 根目录依赖与脚本

位置: packages/api/

职责:

  • 包含所有 tRPC 路由和业务逻辑
  • 定义公共和受保护的过程
  • 处理 API 请求和响应

关键文件:

  • src/routers/: tRPC 路由定义
  • src/context.ts: tRPC 上下文创建
  • src/index.ts: tRPC 初始化和导出

位置: packages/auth/

职责:

  • Better-Auth 的配置和初始化
  • 认证适配器设置(Drizzle)
  • 认证插件配置

关键文件:

  • src/index.ts: Better-Auth 配置

位置: packages/db/

职责:

  • Drizzle ORM 数据库架构定义
  • 表结构和关系定义
  • 数据库连接配置

关键文件:

  • src/schema/: 数据库表定义
  • src/index.ts: 数据库连接导出

位置: packages/redis/

职责:

  • Upstash Redis 客户端配置
  • 提供 Redis 连接实例
  • 用于会话管理和缓存

关键文件:

  • src/index.ts: Redis 客户端导出

位置: packages/env/

职责:

  • 使用 @t3-oss/env-core 管理环境变量
  • 类型安全的环境变量验证
  • 服务器和客户端环境变量分离

关键文件:

  • src/server.ts: 服务器环境变量
  • src/web.ts: 客户端环境变量

位置: packages/config/

职责:

  • 共享的 TypeScript 配置
  • 基础 tsconfig 设置

关键文件:

  • tsconfig.base.json: 基础 TypeScript 配置

Next.js 前端应用,包含:

  • 用户界面组件
  • 页面路由
  • tRPC 客户端配置

Hono 后端服务器,包含:

  • API 路由配置
  • 中间件设置
  • tRPC 服务器集成

Astro Starlight 文档站点,包含:

  • 项目文档
  • API 参考
  • 使用指南
apps/web ──┐
├──> @IAM/api ──> @IAM/auth ──> @IAM/db
apps/server ─┘ ├──> @IAM/redis
└──> @IAM/env