MuseMVP
MuseMVP 文档

项目结构

了解 MuseMVP 的 pnpm 工作区、应用边界、共享包与修改入口。

MuseMVP 是一个 pnpm workspace:两个可独立部署的 Next.js 应用,共享领域包。这里描述的是购买后获得的 MuseMVP 模板仓库,不是官网仓库;目录为主要结构节选,而非完整文件清单。

工作区总览

musemvp/
|-- .agents/skills/       # AI workflows
|-- .github/
|-- .vscode/
|-- apps/
|   |-- web/             # Next.js + Node (Vercel / Docker)
|   |   |-- AGENTS.md    # Node-specific agent rules
|   |-- web-cloudflare/  # Next.js + Workers (D1 / R2)
|       |-- AGENTS.md    # Workers-specific agent rules
|-- packages/
|   |-- api/
|   |-- auth/
|   |-- billing/
|   |-- cli/
|   |-- config/
|   |-- db/
|   |-- i18n/
|   |-- mail/
|   |-- shared/
|   |-- storage/
|   |-- testing/
|   |-- tsconfig/
|   |-- ui/
|   |-- vitest-config/
|-- patches/
|-- scripts/
|-- tests/
|-- AGENTS.md
|-- biome.json
|-- CLAUDE.md
|-- docker-compose.yml
|-- package.json
|-- pnpm-workspace.yaml
|-- tsconfig.json
|-- turbo.json

apps:两个平台,明确边界

目录职责
apps/webNext.js + Node.js,部署至 Vercel / Docker;使用 PostgreSQL、S3 兼容存储和 Resend。
apps/web-cloudflareNext.js + Workers,经 OpenNext 部署;使用 D1(DB)、R2(R2_BUCKET)和 Cloudflare Email Sending。

两个应用保留各自完整的页面代码,不抽成共享页面包。公共页面变更后运行 pnpm apps:parity 检查一致性;平台适配代码保持独立。

应用内部的主要修改入口(两个应用均使用对应路径):

路径(相对于应用目录)用途
src/app/(landing-page)/[locale]/落地页、定价、博客、文档与法律页面的路由及区块编排。
src/app/(saas-page)/登录后的产品路由。
src/modules/业务界面与功能编排。
src/backend/api/组装 Hono 中间件与业务路由。
src/backend/auth/将平台依赖注入 Better Auth。
src/backend/database/为共享查询绑定应用数据库驱动。
src/server/邮件、存储等平台适配与依赖组装。
src/env/应用环境变量 schema。
content/docs、posts、legal 等 MDX 原始内容。
source.config.tsFumadocs 内容集合与 schema。

packages:共享领域逻辑与工程配置

目录用途
packages/api共享 Hono 错误处理;业务路由仍由各应用自行组装。
packages/authBetter Auth 工厂及客户端入口,由应用注入各自的平台依赖。
packages/billing统一配置 Stripe、Creem、Dodo Payments 和 Waffo 四个支付网关。
packages/cli负责本地开发的环境初始化与 doctor 诊断。
packages/config集中管理产品、认证、支付与国际化配置。
packages/db包含 PostgreSQL 与 D1 的 Drizzle schema、迁移和共享查询。
packages/i18n共享中英文消息、语言类型与路由辅助函数。
packages/mail邮件模板、发送工具与环境配置就绪检查。
packages/shared不依赖具体业务模块的纯函数、辅助工具和类型。
packages/storageNode 使用兼容 S3 的工具;Worker 使用应用内的原生 R2 适配器。
packages/testing维护领域包共用的测试约定与覆盖率下限。
packages/tsconfig为工作区内的应用与包提供共享编译配置。
packages/ui共享类名与 UI 工具;应用页面仍由各应用负责。
packages/vitest-config复用 Vitest 预设,让各包的测试配置保持一致。

包通过 @musemvp/* 导入其他包,不使用应用的 @/ 别名。业务能力通过工厂、纯函数和类型共享;数据库查询放在 packages/db,应用负责提供具体驱动。

工程与协作目录

  • .agents/skills/:可复用的 AI 工作流;AGENTS.md 定义仓库边界和验证约定。
  • AGENTS.md:统一架构、任务路由、应用与包边界及验收标准。
  • CLAUDE.md:引用统一规则,并补充 Claude Code 的工具与工作流偏好,不重复维护另一套架构规则。
  • apps/web/AGENTS.md 与 apps/web-cloudflare/AGENTS.md:分别定义 Node / Workers 平台边界与共享页面同步约定。
  • 8 个真实技能工作流覆盖任务分流、公共页面定制、SaaS 布局、SaaS 页面路由、产品行为、测试、风险评审和更新日志,详见 AI 协作。
  • scripts/:环境初始化、迁移、发布和应用一致性等自动化工具。
  • tests/:unit/、api/、e2e/ 及共用测试辅助代码;包自己的测试放在包内 tests/。
  • patches/:pnpm 管理的依赖补丁。
  • pnpm-workspace.yaml:工作区范围与依赖 catalogs;turbo.json:任务图配置;biome.json:格式化与 lint;package.json:根脚本;docker-compose.yml:Node 应用的本地 Postgres。
  • packages/testing、packages/tsconfig、packages/vitest-config:工程约定位于实际的包目录,不另设 tooling/。

我应该改哪里?

需求修改入口
替换首页区块对应应用的 src/app/(landing-page)/[locale]/ 路由与 landing 模块。
调整产品、认证与套餐配置packages/config。
修改文案packages/i18n/src/translations/{en,zh}/default.json;衍生产品覆盖写入同目录 mvp.json。
修改数据与查询packages/db 的 schema、迁移与查询;平台绑定留在应用中。
接入支付packages/billing 的网关与配置;业务路由由应用组装。
编辑文档或博客对应应用的 content/,不要编辑生成的 .source/。

.source/ 与 Cloudflare 应用的 cloudflare-env.d.ts 是生成产物,不手动修改。分别通过 Fumadocs 构建与 pnpm cf:typegen 更新。

继续阅读

本页目录