Repositorio de GitHub
Plantilla mínima de suscripción de Next.js + Supabase + Dodo Payments
Demo en vivo
Explora la demo desplegada
Descripción general
Una plantilla lista para producción para suscripciones utilizando Next.js 15, React 19, Supabase, Drizzle ORM y Dodo Payments. Viene con Google OAuth, checkout de suscripción, manejo de webhooks, esquema de base de datos y un panel básico.Si solo necesitas manejadores de rutas para una aplicación existente, consulta los adaptadores dedicados: 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 base de datos)
- Cuenta de Dodo Payments (clave API, secreto de webhook)
- Cliente de Google Cloud OAuth (ID de cliente y secreto)
Inicio rápido
1
Clonar e instalar
2
Crear proyecto de Supabase
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
Configurar Google OAuth
Establece la URI de redirección a:
https://[your-project-ref].supabase.co/auth/v1/callback en Google Cloud, luego habilita el proveedor de Google en Supabase Auth usando tu ID de cliente y secreto.4
Configurar Dodo Payments
Genera una clave API y un secreto de webhook desde el panel de Dodo. Establece el entorno a
test_mode mientras desarrollas.5
Crear .env.local
6
Provisionar esquema de base de datos
Tablas creadas:
users, subscriptions, payments.7
Desplegar función de webhook
cURL
8
Agregar webhook en Dodo Payments
Establece la URL del endpoint a:Selecciona eventos de pago y suscripción.
9
Crear productos y características
En el panel de Dodo → Productos → Crear Producto. Opcionalmente agrega metadatos:La UI de precios lee este
features array y lo renderiza dinámicamente.10
Ejecutar el servidor de desarrollo
Qué incluye
- Autenticación a través de Supabase (Google OAuth configurado)
- Checkout de suscripción a través de Dodo Payments
- Función Edge de Supabase para webhooks (
dodo-webhook) - Esquema y migraciones de Drizzle ORM
- Panel con facturas, estado de suscripción y características del plan
Archivos y rutas clave
- Función Edge
- Rutas de Next.js
- Base de datos (Drizzle)
Variables de entorno
Supabase
Supabase
Dodo Payments
Dodo Payments
Google OAuth
Google OAuth
Verificación y solución de problemas
Firma de webhook inválida (401)
Firma de webhook inválida (401)
- Asegúrate de que
DODO_WEBHOOK_SECRETcoincida con el valor del panel de Dodo - Confirma que desplegaste la última
dodo-webhookfunción - Verifica que el nombre del encabezado sea correcto en tu función (Dodo-Signature)
Fallo en el push a la base de datos
Fallo en el push a la base de datos
- Verifica la sintaxis de
DATABASE_URLy la salida de red de Supabase - Espera ~2–3 minutos después de la creación del proyecto antes del primer push
Desajuste de redirección de OAuth
Desajuste de redirección de OAuth
- 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 el proveedor de Auth de Supabase
Ahora tienes un SaaS de suscripción funcionando con Supabase y Dodo Payments.
Repositorio original y pasos detallados: dodo-supabase-subscription-starter.