Repositório do GitHub
Boilerplate mínimo de assinaturas Next.js + Supabase + Dodo Payments
Demonstração ao Vivo
Explore a demonstração 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 vem com Google OAuth, checkout de assinatura, manipulação de webhook, esquema de banco de dados e um painel básico.Se você precisar apenas de manipuladores de rota para um aplicativo existente, veja os adaptadores dedicados: Adaptador Next.js e Adaptador Express.
Pré-requisitos
- Node.js 18+ (ou Bun 1.0+)
- Projeto Supabase (URL, chave Anon, chave de função de serviço, URL do banco de dados)
- Conta Dodo Payments (chave API, segredo do webhook)
- Cliente OAuth do Google Cloud (ID do cliente e segredo)
Início Rápido
1
Clone e instale
2
Crie um projeto Supabase
Crie um projeto Supabase e copie:
- NEXT_PUBLIC_SUPABASE_URL
- NEXT_PUBLIC_SUPABASE_ANON_KEY
- SUPABASE_SERVICE_ROLE_KEY
- DATABASE_URL (String de conexão)
3
Configure o Google OAuth
Defina a URI de redirecionamento para:
https://[your-project-ref].supabase.co/auth/v1/callback no Google Cloud, depois ative o provedor Google na autenticação Supabase usando seu ID do cliente e segredo.4
Configure o Dodo Payments
Gere uma chave API e um segredo de webhook no painel Dodo. Defina o ambiente para
test_mode durante o desenvolvimento.5
Crie .env.local
6
Provisione o esquema do banco de dados
Tabelas criadas:
users, subscriptions, payments.7
Implante a função do webhook
cURL
8
Adicione o webhook no Dodo Payments
Defina a URL do endpoint para:Selecione eventos de pagamento e assinatura.
9
Crie produtos e recursos
No painel Dodo → Produtos → Criar Produto. Opcionalmente, adicione metadados:A interface de preços lê este
features array e o renderiza dinamicamente.10
Execute o servidor de desenvolvimento
O que está incluído
- Autenticação via Supabase (Google OAuth configurado)
- Checkout de assinatura via Dodo Payments
- Função Edge do Supabase para webhooks (
dodo-webhook) - Esquema e migrações do Drizzle ORM
- Painel com faturas, status de assinatura e recursos do plano
Arquivos e caminhos principais
- Função Edge
- Rotas Next.js
- Banco de Dados (Drizzle)
Variáveis de ambiente
Supabase
Supabase
Dodo Payments
Dodo Payments
Google OAuth
Google OAuth
Verificação e solução de problemas
Assinatura do webhook inválida (401)
Assinatura do webhook inválida (401)
- Certifique-se de que
DODO_WEBHOOK_SECRETcorresponda ao valor do painel Dodo - Confirme que você implantou a função mais recente
dodo-webhook - Verifique se o nome do cabeçalho está correto em sua função (Dodo-Signature)
Falha ao enviar para o banco de dados
Falha ao enviar para o banco de dados
- Verifique a sintaxe de
DATABASE_URLe a saída de rede do Supabase - Aguarde ~2–3 minutos após a criação do projeto antes do primeiro envio
Desvio de redirecionamento OAuth
Desvio de redirecionamento OAuth
- A URI de redirecionamento deve ser
https://[ref].supabase.co/auth/v1/callback - Certifique-se de que seja o mesmo no Google Cloud e no provedor de autenticação Supabase
Agora você tem um SaaS de assinatura funcionando scaffolded com Supabase e Dodo Payments.
Repositório original e etapas detalhadas: dodo-supabase-subscription-starter.