GitHub Repository
Boilerplate mínimo de assinaturas Next.js + Supabase + Dodo Payments
Live Demo
Explore a demo implantada
Visão geral
Um boilerplate pronto para produção para assinaturas usando Next.js 15, React 19, Supabase, Drizzle ORM e Dodo Payments. Ele inclui Google OAuth, checkout de assinaturas, tratamento de webhooks, esquema de banco de dados e um dashboard básico.Se você precisa apenas de route handlers para um app existente, consulte os adaptadores dedicados: Adaptador Next.js e Adaptador Express.
Pré-requisitos
- Node.js 18+ (ou Bun 1.0+)
- Projeto do Supabase (URL, chave Anon, chave de Service role, URL do banco de dados)
- Conta do Dodo Payments (chave de API, segredo do Webhook)
- Cliente OAuth do Google Cloud (Client ID e Secret)
Início rápido
1
Clone and install
2
Create Supabase project
Crie um projeto do Supabase e copie:
- NEXT_PUBLIC_SUPABASE_URL
- NEXT_PUBLIC_SUPABASE_ANON_KEY
- SUPABASE_SERVICE_ROLE_KEY
- DATABASE_URL (string de conexão)
3
Configure Google OAuth
Defina o URI de redirecionamento como:
https://[your-project-ref].supabase.co/auth/v1/callback no Google Cloud e ative o provedor Google no Supabase Auth usando seu Client ID e Secret.4
Configure Dodo Payments
Gere uma chave de API e um segredo de Webhook no dashboard do Dodo. Defina o ambiente como
test_mode durante o desenvolvimento.5
Create .env.local
6
Provision database schema
Tabelas criadas:
users, subscriptions, payments.7
Deploy webhook function
cURL
8
Add webhook in Dodo Payments
Defina a URL do endpoint como:Selecione os eventos de pagamento e assinatura.
9
Create products and features
No dashboard do Dodo → Products → Create Product. Opcionalmente, adicione metadados:A UI de preços lê este array
features e o renderiza dinamicamente.10
Run the dev server
O que está incluído
- Autenticação via Supabase (Google OAuth configurado)
- Checkout de assinaturas via Dodo Payments
- Supabase Edge Function para webhooks (
dodo-webhook) - Esquema e migrações do Drizzle ORM
- Dashboard com faturas, status da assinatura e recursos do plano
Arquivos e caminhos principais
- Edge Function
- Next.js routes
- Database (Drizzle)
Variáveis de ambiente
Supabase
Supabase
Dodo Payments
Dodo Payments
Google OAuth
Google OAuth
Verificação e solução de problemas
Webhook signature invalid (401)
Webhook signature invalid (401)
- Verifique se
DODO_WEBHOOK_SECRETcorresponde ao valor do dashboard do Dodo - Confirme se você implantou a função
dodo-webhookmais recente - Verifique se o nome do header está correto na sua função (Dodo-Signature)
Database push fails
Database push fails
- Verifique a sintaxe de
DATABASE_URLe a saída de rede do Supabase - Aguarde cerca de 2–3 minutos após a criação do projeto antes do primeiro push
OAuth redirect mismatch
OAuth redirect mismatch
- O URI de redirecionamento deve ser
https://[ref].supabase.co/auth/v1/callback - Garanta o mesmo valor no Google Cloud e no provedor do Supabase Auth
Agora você tem um SaaS de assinaturas funcional, criado com Supabase e Dodo Payments.
Repositório original e etapas detalhadas: dodo-supabase-subscription-starter.