项目结构

项目结构

生成项目按职责分层。业务页面放在 appfeatures,可组合规则放在 core/modules,供应商差异放在 adapters,业务统一从 services 调用外部能力。

核心目录

src/
├── app/                 # 页面、Layout、API、webhook、health
├── core/modules/        # 模块契约与校验
├── core/services/       # 支付、邮件、存储、AI、任务、限流契约
├── modules/             # 当前生成项目的模块注册表
├── adapters/            # 当前选中的供应商实现
├── services/            # 业务层使用的服务实例
├── features/            # 产品功能模块
├── db/schema/           # 按模块拆分的 Drizzle Schema
├── content/             # 文档、博客和法律页 MDX
├── config/              # 站点、导航、价格和套餐
└── test/                # 核心逻辑和集成测试

生成与选择

路径作用
nextdevtpl.generated.json当前项目实际模块、适配器、目标和 catalog 版本
src/modules/registry.ts运行时代码能看到的模块清单
src/adapters/registry.ts当前适配器声明和环境要求
.env.example按生成选择留下的环境变量

模板仓库还包含 recipes/catalog.jsontemplates/base/manifest.jsonpackages/create-nextdevtpltests/compatibility。普通生成项目不会携带这些 生成器维护文件。

路由

src/app/
├── [locale]/
│   ├── (marketing)/     # 首页、定价、博客、法律页、PSEO
│   ├── (auth)/          # 登录、注册、找回密码
│   ├── (dashboard)/     # 用户工作台、积分、设置、工单
│   ├── (admin)/         # 管理后台
│   └── docs/            # Fumadocs 文档
└── api/
    ├── auth/            # Better Auth
    ├── webhooks/payment # 当前支付适配器的统一 webhook
    ├── upload/          # 预签名上传
    ├── jobs/            # 受保护 cron
    └── health/          # 部署健康检查

生成器会删除未选模块对应的路由。直接访问缺失路由得到 404 属于预期行为。

改代码时放哪里

改动目录
页面或业务流程src/features/<模块> 与对应 src/app 路由
外部供应商 APIsrc/adapters/<服务>
业务调用的统一入口src/services/<服务>.ts
新模块声明src/features/<模块>/manifest.ts
数据表src/db/schema/<分组>.ts
UI 文案messages/en.jsonmessages/zh.json
文档src/content/docs/ensrc/content/docs/zh
部署deploy/Dockerfilecompose.yamlvercel.jsonwrangler.jsonc

业务代码优先依赖 src/services 和公开模块出口,避免跨目录导入适配器内部文件。

本页目录