指南
了解项目
帮助你了解 MvpFast 的技术栈和项目架构
技术栈
| 类别 | 技术 | 版本 |
|---|---|---|
| 框架 | Next.js (App Router) | 15 |
| 语言 | TypeScript | 5 |
| UI 框架 | Tailwind CSS + DaisyUI | 4 / 5 |
| 数据库 | MongoDB Atlas + Prisma ORM | - |
| 认证 | NextAuth.js v5 + RBAC | 5 (beta) |
| 国际化 | next-intl | - |
| 状态管理 | Redux Toolkit | - |
| 文档/博客 | Fumadocs + MDX | - |
| AI 服务 | OpenRouter / SiliconFlow | - |
| 文件存储 | Cloudflare R2 | - |
| 部署 | Vercel / Docker | - |
| 支付 | 微信支付 v3 API | - |
| 短信/邮件 | 阿里云短信 / SMTP 邮件 | - |
项目架构
MvpFast 使用 路由组 (Route Groups) 分离两套独立的布局系统:
src/app/
├── (fumadocs)/ # 文档/博客(Fumadocs UI 布局)
│ ├── docs/ # /docs/*
│ └── blog/ # /blog/*
│
├── (main)/ # 主应用(自定义布局)
│ ├── [local]/ # 国际化路由 /zh/* 和 /en/*
│ │ ├── page.tsx # 首页 Landing Page
│ │ ├── auth/ # 登录 / 注册
│ │ ├── dashboard/ # 后台管理(RBAC 保护)
│ │ └── pay/ # 支付页面
│ └── api/ # API 路由
│ ├── admin/ # 管理员接口(需鉴权)
│ ├── user/ # 用户接口(需登录)
│ └── wx/ # 微信登录 + 微信支付路由组名称
(fumadocs)和(main)不会出现在 URL 中。
根布局
主应用的根布局位于 src/app/(main)/layout.tsx,包含以下功能:
- 国际化 SEO — 通过
next-intl的getTranslations动态生成多语言 metadata - Open Graph / Twitter Card — 自动生成社交分享信息
- JSON-LD 结构化数据 —
<GlobalJsonLd />组件输出搜索引擎结构化数据 - 主题控制 — 强制亮色主题,通过 DaisyUI 的
data-theme切换 - 全局 Provider — SessionProvider (认证)、ReduxProvider (状态)、ThemeProviders (主题)
- Google Analytics — 通过独立组件按需加载,不阻塞渲染
核心目录
| 目录 | 说明 |
|---|---|
src/components/landingpage/ | 首页组件 (Hero、Feature、Price、FAQ 等) |
src/components/dashboard/ | 后台组件 (Table 等) |
src/components/weChat/ | 微信登录/支付组件 |
src/models/ | 数据库操作函数 (CRUD 封装) |
src/lib/ | 工具库 (鉴权、支付签名、R2 存储、RBAC 等) |
src/i18n/messages/ | 国际化翻译文件 (zh.json / en.json) |
src/store/ | Redux 全局状态管理 |
src/constants/ | 常量定义 (路由、API 地址、消息等) |
prisma/schema.prisma | 数据库模型定义 |
content/ | MDX 文档和博客内容 |
认证与权限
系统使用 RBAC (基于角色的访问控制),定义在 src/lib/rbac.ts:
- admin — 全部权限 (用户管理、订单、系统配置等)
- user — 基础权限 (个人信息、AI 对话、自己的订单等)
权限在三层生效:
- 中间件层 (
src/middleware.ts) — 根据路由自动拦截未授权访问 - API 层 —
requireAdmin()或requirePermission()鉴权 - 页面层 —
hasPermission()控制 UI 显示
配置管理
MvpFast 采用 代码配置 + 数据库配置 双层模式:
| 配置类型 | 位置 | 说明 |
|---|---|---|
| 购买模式 / 商品 | src/config.ts | 支持 direct (直接购买) 和 credits (积分购买) 两种模式 |
| 站点名称 / 登录方式 / 支付方式 | 数据库 SystemConfig 表 | 通过后台管理界面修改,支持审计日志 |
| 国际化文本 | src/i18n/messages/*.json | 首页、导航、价格等所有展示文本 |
| 主题色 | src/app/(main)/globals.css | DaisyUI 主题变量 --p |
| 环境变量 | .env | 数据库、密钥、第三方服务凭据 |