GitHub Repository
Minimal Next.js + Supabase + Dodo Payments subscription boilerplate
Live Demo
Explore the deployed demo
概述
一个生产就绪的订阅模板,使用 Next.js 15、React 19、Supabase、Drizzle ORM 和 Dodo Payments。它包括 Google OAuth、订阅结算、Webhook 处理、数据库架构和一个基础仪表盘。如果您只需要现有应用程序的路由处理程序,请参阅专用适配器:Next.js 适配器 和 Express 适配器。
先决条件
- Node.js 18+(或 Bun 1.0+)
- Supabase 项目(URL、匿名密钥、服务角色密钥、数据库 URL)
- Dodo Payments 账户(API 密钥,Webhook 密钥)
- Google Cloud OAuth 客户端(客户端 ID 和密钥)
快速入门
1
Clone and install
2
Create Supabase project
创建一个 Supabase 项目并复制:
- NEXT_PUBLIC_SUPABASE_URL
- NEXT_PUBLIC_SUPABASE_ANON_KEY
- SUPABASE_SERVICE_ROLE_KEY
- DATABASE_URL(连接字符串)
3
Configure Google OAuth
在 Google Cloud 中设置重定向 URI 为:
https://[your-project-ref].supabase.co/auth/v1/callback,然后使用您的客户端 ID 和密钥在 Supabase Auth 中启用 Google 提供商。4
Configure Dodo Payments
从 Dodo 仪表板生成一个 API 密钥和 Webhook 密钥。在开发过程中,将环境设置为
test_mode。5
Create .env.local
6
Provision database schema
创建的表格:
users, subscriptions, payments。7
Deploy webhook function
cURL
8
Add webhook in Dodo Payments
设置端点 URL 为:选择付款和订阅事件。
9
Create products and features
在 Dodo 仪表板 → 产品 → 创建产品。可选择添加元数据:定价 UI 读取这个
features 数组并动态渲染。10
Run the dev server
包含内容
- 通过 Supabase 进行身份验证(配置了 Google OAuth)
- 通过 Dodo Payments 进行订阅结算
- 用于 Webhook 的 Supabase 边缘函数(
dodo-webhook) - Drizzle ORM 架构和迁移
- 包含发票、订阅状态和计划功能的仪表盘
关键文件和路径
- Edge Function
- Next.js routes
- Database (Drizzle)
环境变量
Supabase
Supabase
Dodo Payments
Dodo Payments
Google OAuth
Google OAuth
验证和故障排除
Webhook signature invalid (401)
Webhook signature invalid (401)
- 确保
DODO_WEBHOOK_SECRET匹配 Dodo 仪表板中的值 - 确认您部署了最新的
dodo-webhook函数 - 验证函数中的标题名称是否正确(Dodo-Signature)
Database push fails
Database push fails
- 检查
DATABASE_URL的语法和 Supabase 网络出口 - 项目创建后等待约 2-3 分钟再进行首次推送
OAuth redirect mismatch
OAuth redirect mismatch
- 重定向 URI 必须是
https://[ref].supabase.co/auth/v1/callback - 确保 Google Cloud 和 Supabase Auth 提供商中的相同设置
您现在有一个工作正常的订阅 SaaS,使用 Supabase 和 Dodo Payments 搭建。
原始仓库和详细步骤:dodo-supabase-subscription-starter。