GitHub Repository
Boilerplate mínimo de suscripciones con Next.js + Supabase + Dodo Payments
Live Demo
Explora la demo implementada
Descripción general
Un boilerplate listo para producción para suscripciones que utiliza Next.js 15, React 19, Supabase, Drizzle ORM y Dodo Payments. Incluye Google OAuth, checkout de suscripciones, gestión de webhooks, esquema de base de datos y un dashboard básico.Si solo necesitas route handlers para una aplicación existente, consulta los adaptadores específicos: adaptador de Next.js y adaptador de Express.
Requisitos previos
- Node.js 18+ (o Bun 1.0+)
- Proyecto de Supabase (URL, clave Anon, clave de rol de servicio, URL de la base de datos)
- Cuenta de Dodo Payments (API key, secreto de Webhook)
- Cliente OAuth de Google Cloud (Client ID y Secret)
Inicio rápido
1
Clone and install
2
Create Supabase project
Crea un proyecto de Supabase y copia:
- NEXT_PUBLIC_SUPABASE_URL
- NEXT_PUBLIC_SUPABASE_ANON_KEY
- SUPABASE_SERVICE_ROLE_KEY
- DATABASE_URL (cadena de conexión)
3
Configure Google OAuth
Establece la URI de redirección en:
https://[your-project-ref].supabase.co/auth/v1/callback en Google Cloud y, a continuación, habilita el proveedor de Google en Supabase Auth mediante tu Client ID y Secret.4
Configure Dodo Payments
Genera una API key y un secreto de Webhook desde el dashboard de Dodo. Establece el entorno en
test_mode durante el desarrollo.5
Create .env.local
6
Provision database schema
Tablas creadas:
users, subscriptions, payments.7
Deploy webhook function
cURL
8
Add webhook in Dodo Payments
Establece la URL del endpoint en:Selecciona los eventos de pagos y suscripciones.
9
Create products and features
En el dashboard de Dodo → Products → Create Product. Opcionalmente, añade metadatos:La UI de precios lee este array
features y lo renderiza dinámicamente.10
Run the dev server
Qué incluye
- Autenticación mediante Supabase (Google OAuth configurado)
- Checkout de suscripciones mediante Dodo Payments
- Supabase Edge Function para webhooks (
dodo-webhook) - Esquema y migraciones de Drizzle ORM
- Dashboard con facturas, estado de la suscripción y funciones del plan
Archivos y rutas principales
- Edge Function
- Next.js routes
- Database (Drizzle)
Variables de entorno
Supabase
Supabase
Dodo Payments
Dodo Payments
Google OAuth
Google OAuth
Verificación y solución de problemas
Webhook signature invalid (401)
Webhook signature invalid (401)
- Asegúrate de que
DODO_WEBHOOK_SECRETcoincida con el valor del dashboard de Dodo - Confirma que implementaste la función
dodo-webhookmás reciente - Verifica que el nombre del encabezado sea correcto en tu función (Dodo-Signature)
Database push fails
Database push fails
- Comprueba la sintaxis de
DATABASE_URLy la salida de red de Supabase - Espera aproximadamente 2–3 minutos después de crear el proyecto antes del primer push
OAuth redirect mismatch
OAuth redirect mismatch
- La URI de redirección debe ser
https://[ref].supabase.co/auth/v1/callback - Asegúrate de que sea la misma en Google Cloud y en el proveedor de Supabase Auth
Ahora tienes una base funcional de SaaS de suscripciones creada con Supabase y Dodo Payments.
Repositorio original y pasos detallados: dodo-supabase-subscription-starter.