MuseMVP

All in Cloudflare

整个 SaaS,只用一个 Cloudflare 账号。

Next.js 16 运行在 Workers 上,D1、R2、Email Sending 与 Turnstile 都以 Cloudflare 原生服务接入。不用自建 Postgres,不用管理 S3 密钥,也不必再接一家邮件服务商。

在线演示正由这个应用自己的 Worker 提供服务。

https://app.example.com
访客任意浏览器

你的 Cloudflare 账号

按设计保留在外部支付Stripe, Creem, Dodo Payments, WaffoGoogle · GitHub 登录

Workers· Next.js 16 · Hono API

OpenNext 将 Next.js 应用构建为一个 Worker。页面渲染与 Hono API 路由在同一个运行时中响应,离访客更近。

配置
main: .open-next/worker.js
模板文件
apps/web-cloudflare/open-next.config.ts
阅读指南

虚线框内的一切都运行在你的 Cloudflare 账号中。支付网关与 OAuth 登录仍是由你自行配置的外部服务。

为什么只用一个平台

要运维的东西更少。

整套技术栈放在 Cloudflare 上,会改变你要运维什么、为什么付费,以及代码在哪里运行。

一个平台

一个控制台,一个 CLI。

计算、数据、文件、邮件、人机验证与日志共用同一个 Cloudflare 账号。Wrangler 负责创建资源、保存密钥、执行迁移和部署。

  • Workers
  • D1
  • R2
  • Static Assets
  • Email Sending
  • Turnstile
  • Observability
apps/web-cloudflare/wrangler.jsonc节选 · 已省略 ID
{
  "main": ".open-next/worker.js",
  "routes": [
    { "pattern": "app.example.com", "custom_domain": true }
  ],
  "assets": { "binding": "ASSETS" },
  "d1_databases": [{ "binding": "DB" }],
  "r2_buckets": [{ "binding": "R2_BUCKET" }],
  "observability": { "enabled": true }
}

默认全球分发

代码在每位访客附近运行。

Workers 运行在 Cloudflare 全球网络上,页面与 API 路由都在靠近用户的位置启动,应用代码无需选择部署区域。

D1 有一个主数据库位置,写入密集的流程需要据此规划。

按用量计费

为请求付费,而不是为闲置服务器付费。

没有虚拟机、容器或数据库服务器在空等流量。Workers、D1 与 R2 按用量计费,并附带一定的包含额度。

不在账单上

  • 闲置服务器
  • 数据库实例
  • R2 出口流量免费

按用量计费

  • Worker 请求与 CPU 时间
  • D1 读写行数
  • R2 存储与操作次数

套餐费用、额度与限制会变化,请以 Cloudflare 当前定价为准;不保证零成本。

从克隆到上线

从空账号到你自己的域名。

与部署指南完全相同的命令。本地开发使用 Wrangler 的本地 D1,在动用远程资源之前就能完成构建与测试。

pnpm cf:deploy 会先严格检查 D1 迁移状态,远程仍有待执行的迁移时会停止部署。

阅读 Workers 部署指南
~/my-saaspnpm · wrangler
  1. # 1 · 一次性创建 D1 和 R2

    pnpm --filter @musemvp/cloudflare exec wrangler d1 create <db>

    pnpm --filter @musemvp/cloudflare exec wrangler r2 bucket create <bucket>

  2. # 2 · 写入环境文件、密钥和本地 D1

    pnpm muse:init --yes --app cloudflare

  3. # 3 · 写入种子账号并本地开发

    pnpm db:seed:d1

    pnpm dev:cf

  4. # 4 · 备份、测试并执行远程迁移

    pnpm db:migrate:d1:remote

  5. # 5 · 检查迁移后部署 Worker

    pnpm cf:deploy

两套 Next.js 应用

两套 Next.js 应用,两种运行时。

musemvp 仓库包含 Node 与 Cloudflare 两套 Next.js 应用,共享领域包。基于 TanStack Start 的 MuseMVP Flare 位于独立仓库。

Next.js + Node

apps/web

Next.js + Cloudflare

apps/web-cloudflare

当前页面

运行时

Vercel 或 Docker 上的 Node.js

通过 OpenNext 运行在 Cloudflare Workers

数据库

PostgreSQL

通过 DB 绑定访问 D1(SQLite)

文件

使用访问密钥的 S3 兼容存储

通过 R2_BUCKET 绑定访问 R2

邮件

Resend 或 Cloudflare Email

Cloudflare Email Sending

本地开发

Docker Compose 中的 PostgreSQL

Wrangler 本地 D1,无需 Docker

部署

Vercel 或你自己的 Docker 主机

pnpm cf:deploy 部署到 Workers

适合场景

需要 PostgreSQL、自托管或长时间运行的 Node 进程。

希望只用一个平台、运行在边缘,并尽量少运维基础设施。

两个应用共享

  • Better Auth:邮箱、验证码、OAuth、2FA
  • Stripe、Creem、Dodo 与 Waffo 支付
  • 后台用户与角色管理
  • 中英文国际化
  • MDX 文档、博客与法律页面
  • AGENTS.md + 8 个 Agent Skills

MuseMVP 与 All in One 包含两套 Next.js 应用及独立的 MuseMVP Flare 源码。UI 模板方案不包含这些工程模板。

查看 Next.js + Node 应用
打开项目看看

每一层,都有清晰的位置。

两个可部署的应用,共享领域包。像浏览代码一样了解 MuseMVP,从应用边界到实际实现。

musemvp 悬浮预览 · 点击查看文档

项目文件浏览器

storage.ts查看文档
apps/web-cloudflare/src/server/storage.ts
源码节选 · MuseMVP 模板

展示主要目录与源码节选。页面由各应用独立维护,领域逻辑通过包共享。

阅读项目结构文档

三个方案,一次付费

选择适合你的方案

所有方案均为含税一次性付费。UI 模板提供落地页,MuseMVP 提供全栈 SaaS 模板,All in One 包含两者。

  • 一次付费
  • 含税价格
  • 无订阅
  • 已获得版本永久可用
最划算

一次付费 · 含税价格

All in One

MuseMVP + 全部 UI 模板

¥459CNY
一次性

全栈 MuseMVP 模板,外加全部 9+ 套 UI 落地页模板及维护期间的新模板。 MuseMVP Flare.

购买 All in One

SaaS 基座

  • 包含Next.js + Node 应用
  • 包含Next.js + Cloudflare 应用
  • 包含TanStack Start + Cloudflare 应用
  • 包含认证、支付与后台
  • 包含AI Native式开发

UI 落地页模板

  • 包含9+ 套已上线落地页模板
  • 包含可修改的页面源码、布局与素材
  • 包含维护期间的新模板

付款后在 Dodo Customer Portal 连接 GitHub,再接受各仓库邀请即可获取源码。

一次付费 · 含税价格

MuseMVP

全栈 SaaS 模板

¥399CNY
一次性

包含 Next.js Node 与 Cloudflare 应用,以及独立的 MuseMVP Flare TanStack Start 模板,内置认证、支付与后台。

购买 MuseMVP

SaaS 基座

  • 包含Next.js + Node 应用
  • 包含Next.js + Cloudflare 应用
  • 包含TanStack Start + Cloudflare 应用
  • 包含认证、支付与后台
  • 包含AI Native式开发

UI 落地页模板

  • 不包含9+ 套已上线落地页模板
  • 不包含可修改的页面源码、布局与素材
  • 不包含维护期间的新模板

付款后在 Dodo Customer Portal 连接 GitHub,再接受各仓库邀请即可获取源码。

一次付费 · 含税价格

UI 模板

UI 落地页模板

¥99CNY
一次性

9+ 套可修改的 Next.js 落地页模板,独立于工程基座的设计产品。

购买 UI 模板

SaaS 基座

  • 不包含Next.js + Node 应用
  • 不包含Next.js + Cloudflare 应用
  • 不包含TanStack Start + Cloudflare 应用
  • 不包含认证、支付与后台
  • 不包含AI Native式开发

UI 落地页模板

  • 包含9+ 套已上线落地页模板
  • 包含可修改的页面源码、布局与素材
  • 包含维护期间的新模板

付款后在 Dodo Customer Portal 连接 GitHub,再接受各仓库邀请即可获取源码。

所有方案均包含

  • 1 名开发者授权
  • 多个商业最终产品
  • 客户项目私有源码交接
  • 产品线更新
  • 公开文档与社区

1 名开发者,可用于多个自有商业产品,并可私有交接客户最终项目源码。禁止共享原始仓库、公开付费源码或转售模板。

获得的版本可永久使用。同产品线维护期间包含更新与新模板,不包含未来独立产品或无限人工服务。

不提供自助升级或补差价购买。如需更换方案,请联系支持。

Cloudflare 常见问题

在 Cloudflare 上运行

平台范围、成本、限制,以及它与 Next.js + Node 的关系。

真的全部都在 Cloudflare 上吗?+

计算、数据库、文件存储、事务邮件、人机验证与日志都在。支付网关(Stripe、Creem、Dodo Payments、Waffo)以及 Google、GitHub 登录仍是由你自行配置的外部服务。

可以免费运行吗?+

按用量计费和包含额度在早期很有帮助,但模板不承诺零成本。请根据你的账号确认 Workers 的 CPU 时间与包体积限制、D1 与 R2 额度,以及 Email Sending 的开通情况。

这个应用可以使用 PostgreSQL 或 Hyperdrive 吗?+

不可以。apps/web-cloudflare 按设计只使用 D1。如果你需要 PostgreSQL,请使用同一次购买中包含的 Next.js + Node 应用。

以后能在 Node 与 Cloudflare 应用之间切换吗?+

两个应用共享包,但切换平台意味着迁移数据(在 PostgreSQL 与 D1、S3 与 R2 之间)并重新验证各项服务,不是改一个环境变量就能完成。

D1 和 Workers 有哪些限制需要注意?+

D1 使用 SQLite 语义,不支持交互式 transaction() 调用,模板使用 batch() 完成多语句写入。Workers 有独立的运行时限制,部署前请用 pnpm cf:preview 检查构建后的 Worker。

哪个套餐包含 Cloudflare 应用?+

MuseMVP 与 All in One 包含两套 Next.js 应用及独立的 MuseMVP Flare 源码。UI 模板方案不包含这些工程模板。

Workers · D1 · R2 · Email · Turnstile

把整个产品放上 Cloudflare。

平台接线已经完成,登录、支付与后台也已就位。从一个能跑起来的 Worker 开始,而不是一个空账号。