Skip to main content

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

打开 http://localhost:3000

包含内容

  • 通过 Supabase 进行身份验证(配置了 Google OAuth)
  • 通过 Dodo Payments 进行订阅结算
  • 用于 Webhook 的 Supabase 边缘函数(dodo-webhook
  • Drizzle ORM 架构和迁移
  • 包含发票、订阅状态和计划功能的仪表盘
保留 DODO_PAYMENTS_ENVIRONMENTtest_mode,直到您完成端到端测试。

关键文件和路径

环境变量

验证和故障排除

  • 确保 DODO_WEBHOOK_SECRET 匹配 Dodo 仪表板中的值
  • 确认您部署了最新的 dodo-webhook 函数
  • 验证函数中的标题名称是否正确(Dodo-Signature)
  • 检查 DATABASE_URL 的语法和 Supabase 网络出口
  • 项目创建后等待约 2-3 分钟再进行首次推送
  • 重定向 URI 必须是 https://[ref].supabase.co/auth/v1/callback
  • 确保 Google Cloud 和 Supabase Auth 提供商中的相同设置
您现在有一个工作正常的订阅 SaaS,使用 Supabase 和 Dodo Payments 搭建。
原始仓库和详细步骤:dodo-supabase-subscription-starter
最后修改于 2026年7月25日