MuseMVP
MuseMVP 文档

技术栈

了解原生 Worker 的运行链路、资源绑定和与 Next.js 模板的区别。

Flare 的目标是把应用、数据库、私有文件、任务与 AI 放在 Cloudflare 原生运行时。它不是把 Next.js 包装为 Worker,也不需要 OpenNext。

运行链路

浏览器 React / React Query
  → TanStack Start server function 或 /api/* server route
  → 应用模块服务
  → @musemvp/* 领域包
  → D1 / R2 / Email / AI / Queues 原生绑定
层当前实现主要入口
页面与 SSRReact、TanStack Start / Routerapps/web/src/routes
构建Vite、Cloudflare Vite plugin、Tailwind、MDXapps/web/vite.config.ts
UIshadcn/Base UI、Lucide、Tailwind 变量apps/web/src/components/ui
数据Drizzle SQLite schema、D1 查询与 batchpackages/db
认证Better Auth、SQLite adapter、认证插件packages/auth
支付四网关统一契约、D1 inbox/outboxpackages/billing、modules/billing
多语言Paraglide 与中英文覆盖消息packages/i18n
工具TypeScript CLI、Vitest、Playwright根 package.json、packages/cli

Worker 中的资源

绑定用途本地与远程的区别
DBD1 账户、文件元数据、账本、任务与审计Wrangler 提供本地 SQLite 状态
R2_BUCKET私有文件内容本地对象不自动同步到生产
EMAILCloudflare Email Sendingdevelopment 改为数据库捕获
AIWorkers AI 模型调用没有本地模型模拟器
JOBSWebhook 与摘要队列生产有独立消费队列与死信队列

src/server.ts 是 Worker 入口,除 fetch 外还处理 Queue 和定时恢复。Wrangler 配置中的 cron 当前每五分钟运行一次恢复任务;不是每个浏览器请求都扫描待处理记录。

与 Next.js 工程的区别

  • UI 是普通 React/TanStack 组件,不采用 Next.js Server Components 的 use client 分层。
  • beforeLoad 做登录和角色守卫,loader 读取数据;服务端 API 仍独立鉴权,不能只靠页面隐藏。
  • 数据库是 D1/SQLite,不读取 PostgreSQL DATABASE_URL;存储通过绑定而非 S3 访问密钥。
  • 路由、SSR、资源名字与发布配置归 Flare 自己管理。原 MuseMVP 的 pnpm dev:cf、cf:deploy 等不是本仓库命令。

调整技术栈前的检查

先确认需要改变的是产品选择还是基础设施。套餐与额度改 packages/config;主题改应用 CSS/组件;资源名改 target-resources.ts。加入数据库驱动或新的部署 adapter 会改变架构边界,不能通过改一个环境变量完成。

版本以当前 pnpm-lock.yaml 为准。升级依赖后应重新验证类型、Workers 兼容性和编译后 E2E,而不是只看浏览器开发模式。

继续阅读项目结构与环境变量。

本页目录