项目结构
代码库布局和关键目录概览。
目录概览
├── app/[locale]/ # 国际化路由
│ ├── (auth)/ # 认证页面(登录、注册、忘记密码)
│ ├── (marketing)/ # 营销页面(首页、定价、博客、联系)
│ ├── (protected)/ # 需要认证的页面(仪表板、个人资料、积分)
│ ├── (admin)/ # 管理后台(用户、订阅、积分管理)
│ ├── demo/ # AI 演示页面(对话、图像、视频)
│ └── docs/ # 文档(Fumadocs)
├── app/api/ # API 路由
│ ├── auth/ # Better Auth + 自定义认证端点
│ ├── payments/creem/ # Creem 支付(checkout + webhook)
│ ├── chat/ # 对话 API(流式响应)
│ ├── image/ # 图像生成 API
│ ├── video/ # 视频生成 API(异步任务)
│ ├── admin/ # 管理员操作 API
│ └── cron/ # 定时任务(积分发放)
├── components/ # 可复用 UI 组件
├── features/ # 功能模块(auth、admin、forms、navigation)
├── lib/ # 核心业务逻辑
│ ├── auth.ts # Better Auth 配置
│ ├── db/ # 数据库连接和 Schema
│ ├── credits.ts # 积分系统逻辑
│ ├── payments/creem.ts # Creem 支付集成
│ ├── billing/ # 订阅和积分发放调度
│ ├── volcano-engine/ # 火山引擎 API 封装
│ └── email.ts # 邮件发送逻辑
├── constants/ # 常量
│ ├── billing.ts # 定价计划和积分包配置
│ ├── tier.ts # 用户等级定义
│ └── website.ts # 网站信息
├── content/docs/ # 文档内容(MDX)
├── messages/ # 国际化翻译文件(en、zh)
└── drizzle/ # 数据库迁移文件路由分组
| 分组 | 路径 | 访问权限 | 用途 |
|---|---|---|---|
(auth) | /login、/signup | 公开 | 认证流程 |
(marketing) | /、/pricing、/blog | 公开 | 营销和 SEO 页面 |
(protected) | /dashboard、/profile | 需要登录 | 用户功能 |
(admin) | /admin/* | 管理员 | 管理面板 |
demo | /demo/* | 公开 | AI 功能演示 |
docs | /docs/* | 公开 | 文档 |
关键文件
| 文件 | 用途 |
|---|---|
lib/auth.ts | Better Auth 配置及注册钩子 |
lib/credits.ts | 积分扣除、退还和余额检查 |
lib/db/schema.ts | 完整数据库 Schema(Drizzle ORM) |
constants/billing.ts | 定价计划、积分数量、Creem 产品 ID |
lib/payments/creem.ts | Creem API 集成(checkout、webhooks) |
proxy.ts | Next.js 代理(i18n 路由) |
i18n.config.ts | 语言区域配置 |