概览
面向 Cloudflare Workers 的功能完备 TanStack Start SaaS 起步模板。
TanStack 模板是一个基于 TanStack Start、TanStack Router、React 19 与 Vite 的功能完备 SaaS 起步模板。它部署到 Cloudflare Workers,并包含 D1 数据库、R2 对象存储、身份认证、支付、邮件、内容、国际化与 AI 示例。
认证、数据库、存储、邮件与内容/国际化均已端到端打通;示例与 UI 起步页面仍需补充你的产品策略、限制、真实数据与生产加固,下方的 功能状态表会逐项说明。
运行时是架构的一部分:DB 与 UPLOADS 是按请求读取的 Cloudflare
绑定,数据库使用兼容 SQLite 的 D1,生产环境通过 wrangler deploy
发布,而不是运行 Node 服务器或容器。
技术栈
| 领域 | 技术 |
|---|---|
| 框架 | TanStack Start + TanStack Router,由 Vite 构建 |
| UI 运行时 | React 19 + TypeScript |
| 身份认证 | Better Auth(邮箱/密码、GitHub/Google OAuth、管理员插件) |
| 数据库 | Cloudflare D1(SQLite)+ Drizzle ORM |
| 存储 | Cloudflare R2 |
| 支付 | Creem |
| 邮件 | Resend + React Email |
| 国际化 | i18next + react-i18next |
| 文档与内容 | Fumadocs MDX、博客与法律内容集合 |
| AI 对话 | Vercel AI SDK + OpenAI |
| AI 媒体 | Replicate 图片、视频与音频任务 |
| 样式 | Tailwind CSS v4 + shadcn/ui |
| 工具链 | Biome、Vitest、pnpm、Wrangler |
功能状态
本文档统一使用以下标签:
- 已集成(Integrated) —— 模板中已端到端连接。
- 示例(Example) —— 可工作的参考实现,仍需产品专属策略、限制或数据。
- UI 起步(UI starter) —— 使用模拟/静态数据或仍有未完成操作的设计页面。
| 领域 | 状态 | 范围 |
|---|---|---|
| 身份认证 | 已集成 | 邮箱/密码、强制验证、密码重置、GitHub/Google OAuth、会话、账号关联和管理员插件 |
| 数据库 | 已集成 | D1/SQLite、Drizzle 认证与支付 schema,以及已提交的 SQL 迁移 |
| 支付 | 示例 | 需登录的 Creem 结账、订单查询、签名校验与部分 Webhook 事件 |
| 邮件/联系 | 已集成 | 使用 Resend 发送验证、重置密码与联系消息 |
| Newsletter | UI 起步 | 只有邮件模板,没有订阅路由或持久化 |
| AI | 示例 | OpenAI 流式对话与 Replicate 媒体任务;未包含生产配额和限流 |
| 内容与国际化 | 已集成 | Fumadocs 文档、博客/法律内容,以及中英文 i18next 路由 |
| Dashboard/管理 | UI 起步 | 部分页面使用模拟/静态数据;路由守卫和认证 API 提供已连接的基础 |
| 存储 | 已集成(策略为示例) | 登录后上传至持久化 R2 并由 Worker 返回;需增加产品限制与更强校验 |
应用界面
TanStack Router 使用无路径布局路由共享 UI,而不会在公开 URL 中增加段:
- 营销(
_marketing) —— 首页、定价、博客、法律内容、联系、支付成功与 AI 页面。 - 身份认证(
auth) —— 登录、注册、验证说明、忘记密码和重置密码。 - Dashboard(
_dashboard) —— 受保护的仪表盘、账户/设置和管理员界面。 - 内容(
_docs) —— Fumadocs 文档,以及博客与法律内容集合。 - 服务路由(
src/routes/api) —— Better Auth、联系邮件、Creem、存储、用户/管理、对话和媒体 API。
可选的 {-$locale} 段包裹这些布局:英文 URL 不带前缀,中文使用 /zh。
从这里开始
按主路径从本地 Worker 走到生产部署:
