LogoLaunchSaaS

项目结构

了解 LaunchSaaS 的文件夹组织和架构

LaunchSaaS 是一个 pnpm workspace monorepo,包含一个 Next.js 应用和多个共享包。

根目录

.
├── apps/
│   └── launchsaas/             # 主 Next.js 应用
├── packages/
│   ├── auth/                   # 认证工具 & safe-action 客户端
│   ├── cache/                  # 缓存提供商(Redis、Upstash、Cloudflare KV)
│   ├── config/                 # 功能配置 & 产品配置
│   ├── cron/                   # 定时任务(QStash)
│   ├── db/                     # 数据库客户端 & 表定义
│   ├── email/                  # 邮件提供商(Resend、Nodemailer)
│   ├── errors/                 # 共享错误定义
│   ├── newsletter/             # 新闻通讯提供商(Resend)
│   ├── payment/                # 支付提供商(Stripe、Creem)
│   ├── storage/                # 存储提供商(S3)
│   └── utils/                  # 共享工具
├── drizzle/                    # 数据库迁移(提交到 git)
├── biome.json                  # Lint + 格式化配置
├── pnpm-workspace.yaml         # Workspace 配置
└── package.json                # 根 workspace 脚本

应用目录 (apps/launchsaas/)

apps/launchsaas/
├── src/                        # 应用源代码
├── content/                    # MDX 内容(博客、文档、更新日志)
├── public/                     # 静态资源
├── scripts/                    # 实用脚本
├── .env                        # 环境变量(不在 git 中)
├── package.json                # 应用依赖
└── next.config.mjs             # Next.js 配置

源代码目录 (apps/launchsaas/src/)

App Router (src/app/)

src/app/
└── [locale]/
    ├── layout.tsx              # 根 locale 布局

    ├── (marketing)/            # 带头部/页脚的公共页面
    │   ├── layout.tsx
    │   ├── blog/
    │   ├── pricing/
    │   └── ...

    ├── (protected)/            # 需要登录的受保护页面
    │   ├── (common)/           # 用户可访问功能
    │   │   ├── billing/
    │   │   └── settings/
    │   └── admin/              # 仅管理员功能
    │       ├── users/
    │       ├── orders/
    │       └── entitlements/

    ├── auth/[path]/            # Better Auth 动态路由
    ├── docs/[[...slug]]/       # Fumadocs 文档
    └── api/                    # API 路由

路由组

  • (marketing)/ - 带营销布局的公共页面(头部、页脚)
  • (protected)/(common)/ - 用户可访问的需认证页面
  • (protected)/admin/ - 仅管理员页面

组件 (src/components/)

src/components/
├── ui/                         # shadcn/ui 组件(请勿直接编辑)
├── layout/                     # 布局组件
│   ├── site-header.tsx
│   ├── site-footer.tsx
│   ├── app-sidebar.tsx
│   └── ...
├── landing/                    # 着陆页部分
├── blog/                       # 博客组件
├── shared/                     # 共享组件
└── email/                      # 邮件模板

服务器操作 (src/actions/)

按领域组织的类型安全服务器操作:

src/actions/
├── billing.ts                  # 支付和订阅操作
├── newsletter.ts               # 新闻通讯订阅操作
├── storage.ts                  # 文件存储操作
└── user.ts                     # 用户管理操作

应用级配置 (src/configuration/)

UI 和品牌配置:

src/configuration/
├── metadata.ts                 # 网站名称、标题、描述、SEO
├── navbar.ts                   # 导航栏项目和操作
├── sidebar.ts                  # 仪表板/管理侧边栏(基于角色)
├── user-button.tsx             # 用户下拉菜单(基于角色)
├── fotoer.ts                   # 页脚链接和徽章
└── social-links.ts             # 社交媒体链接

功能标志和产品/定价配置位于 packages/config/src/ — 见下文。

库 (src/lib/)

应用特定工具:

src/lib/
├── auth/                       # Better Auth 实例配置
├── env/
│   ├── server.ts               # 仅服务器环境变量
│   └── client.ts               # 客户端安全环境变量
├── session.ts                  # 会话助手
└── safe-action.ts              # 从 @launchsaas/auth 重新导出

模式 (src/schemas/)

应用特定的 Zod 验证模式。

共享包

配置 (packages/config/src/)

packages/config/src/
├── features/                   # 功能标志 & 提供商选择
│   ├── index.ts                # 选择生产或开发配置
│   ├── development.ts          # 开发环境功能配置
│   └── production.ts           # 生产环境功能配置
└── product/                    # 定价计划和产品(按支付提供商)
    ├── index.ts
    ├── development.ts
    └── production.ts

数据库 (packages/db/src/)

packages/db/src/
├── tables/                     # Drizzle 表定义
│   ├── auth.ts                 # 认证表(自动生成,请勿编辑)
│   ├── order.ts                # 不可变支付记录
│   ├── entitlement.ts          # 可变用户访问/订阅状态
│   └── index.ts
├── db.ts                       # 数据库客户端
└── index.ts                    # 公共导出

提供商包

每个提供商包(emailpaymentstoragenewslettercachecron)遵循相同结构:

packages/{name}/src/
├── provider.ts                 # 接口定义
├── factory.ts                  # 提供商工厂
├── index.ts                    # 公共导出
└── providers/
    └── {provider-name}.ts

内容目录 (apps/launchsaas/content/)

content/
├── blog/                       # 博客文章(MDX)
├── docs/                       # 文档(MDX)
└── changelog/                  # 更新日志条目(MDX)

关键文件

文件描述
apps/launchsaas/src/configuration/metadata.ts网站名称、标题、描述、logo
apps/launchsaas/src/configuration/navbar.ts带嵌套菜单的导航
apps/launchsaas/src/configuration/sidebar.ts仪表板/管理的基于角色侧边栏
packages/config/src/features/功能标志和提供商选择
packages/config/src/product/定价计划和产品
apps/launchsaas/src/lib/auth/auth.tsBetter Auth 配置
apps/launchsaas/src/app/globals.css主题颜色和全局样式
apps/launchsaas/content/docs/meta.json文档侧边栏顺序

下一步