GitHub Repository
Boilerplate subscription tối giản cho Next.js + Supabase + Dodo Payments
Live Demo
Khám phá bản demo đã triển khai
Tổng quan
Boilerplate sẵn sàng cho môi trường production để triển khai subscription, sử dụng Next.js 15, React 19, Supabase, Drizzle ORM và Dodo Payments. Gói này bao gồm Google OAuth, checkout subscription, xử lý webhook, database schema và dashboard cơ bản.Nếu bạn chỉ cần route handler cho một ứng dụng hiện có, hãy xem các adaptor chuyên dụng: Adaptor Next.js và Adaptor Express.
Điều kiện tiên quyết
- Node.js 18+ (hoặc Bun 1.0+)
- Project Supabase (URL, Anon key, Service role key, Database URL)
- Tài khoản Dodo Payments (API key, Webhook secret)
- OAuth client của Google Cloud (Client ID và Secret)
Bắt đầu nhanh
1
Clone and install
2
Create Supabase project
Tạo một project Supabase và sao chép:
- NEXT_PUBLIC_SUPABASE_URL
- NEXT_PUBLIC_SUPABASE_ANON_KEY
- SUPABASE_SERVICE_ROLE_KEY
- DATABASE_URL (Connection string)
3
Configure Google OAuth
Đặt redirect URI thành:
https://[your-project-ref].supabase.co/auth/v1/callback trong Google Cloud, sau đó bật Google provider trong Supabase Auth bằng Client ID và Secret của bạn.4
Configure Dodo Payments
Tạo API key và Webhook secret từ dashboard Dodo. Đặt environment thành
test_mode trong quá trình phát triển.5
Create .env.local
6
Provision database schema
Các bảng được tạo:
users, subscriptions, payments.7
Deploy webhook function
cURL
8
Add webhook in Dodo Payments
Đặt endpoint URL thành:Chọn các sự kiện payment và subscription.
9
Create products and features
Trong dashboard Dodo → Products → Create Product. Bạn có thể thêm metadata:Giao diện định giá đọc mảng
features này và render động.10
Run the dev server
Các thành phần được bao gồm
- Xác thực thông qua Supabase (đã cấu hình Google OAuth)
- Checkout subscription thông qua Dodo Payments
- Supabase Edge Function cho webhook (
dodo-webhook) - Drizzle ORM schema và migrations
- Dashboard với invoices, trạng thái subscription và các tính năng của plan
Tệp và đường dẫn chính
- Edge Function
- Next.js routes
- Database (Drizzle)
Environment variables
Supabase
Supabase
Dodo Payments
Dodo Payments
Google OAuth
Google OAuth
Xác minh và khắc phục sự cố
Webhook signature invalid (401)
Webhook signature invalid (401)
- Đảm bảo
DODO_WEBHOOK_SECRETkhớp với giá trị trong dashboard Dodo - Xác nhận bạn đã triển khai function
dodo-webhookmới nhất - Xác minh tên header trong function của bạn là chính xác (Dodo-Signature)
Database push fails
Database push fails
- Kiểm tra cú pháp
DATABASE_URLvà network egress của Supabase - Chờ khoảng 2–3 phút sau khi tạo project trước lần push đầu tiên
OAuth redirect mismatch
OAuth redirect mismatch
- Redirect URI phải là
https://[ref].supabase.co/auth/v1/callback - Đảm bảo giá trị tương tự trong Google Cloud và Supabase Auth provider
Giờ đây bạn đã có một scaffold SaaS subscription hoạt động với Supabase và Dodo Payments.
Repository gốc và các bước chi tiết: dodo-supabase-subscription-starter.