GitHub Repository
Boilerplate minimal Next.js + Supabase + Dodo Payments pour les abonnements
Live Demo
Explorer la démo déployée
Vue d’ensemble
Un boilerplate prêt pour la production destiné aux abonnements, utilisant Next.js 15, React 19, Supabase, Drizzle ORM et Dodo Payments. Il inclut Google OAuth, le checkout des abonnements, la gestion des webhooks, le schéma de base de données et un tableau de bord de base.Si vous avez uniquement besoin de route handlers pour une application existante, consultez les adaptateurs dédiés : Adaptateur Next.js et Adaptateur Express.
Prérequis
- Node.js 18+ (ou Bun 1.0+)
- Projet Supabase (URL, clé Anon, clé de rôle Service, URL de base de données)
- Compte Dodo Payments (clé API, secret de webhook)
- Client OAuth Google Cloud (ID client et secret)
Démarrage rapide
1
Clone and install
2
Create Supabase project
Créez un projet Supabase et copiez :
- NEXT_PUBLIC_SUPABASE_URL
- NEXT_PUBLIC_SUPABASE_ANON_KEY
- SUPABASE_SERVICE_ROLE_KEY
- DATABASE_URL (chaîne de connexion)
3
Configure Google OAuth
Définissez l’URI de redirection sur :
https://[your-project-ref].supabase.co/auth/v1/callback dans Google Cloud, puis activez le fournisseur Google dans Supabase Auth à l’aide de votre ID client et de votre secret.4
Configure Dodo Payments
Générez une clé API et un secret de webhook depuis le tableau de bord Dodo. Définissez l’environnement sur
test_mode pendant le développement.5
Create .env.local
6
Provision database schema
Tables créées :
users, subscriptions, payments.7
Deploy webhook function
cURL
8
Add webhook in Dodo Payments
Définissez l’URL du endpoint sur :Sélectionnez les événements de paiement et d’abonnement.
9
Create products and features
Dans le tableau de bord Dodo → Produits → Créer un produit. Ajoutez éventuellement des métadonnées :L’interface de tarification lit ce tableau
features et l’affiche dynamiquement.10
Run the dev server
Contenu inclus
- Authentification via Supabase (Google OAuth configuré)
- Checkout des abonnements via Dodo Payments
- Supabase Edge Function pour les webhooks (
dodo-webhook) - Schéma et migrations Drizzle ORM
- Tableau de bord avec les factures, l’état de l’abonnement et les fonctionnalités du plan
Fichiers et chemins principaux
- Edge Function
- Next.js routes
- Database (Drizzle)
Variables d’environnement
Supabase
Supabase
Dodo Payments
Dodo Payments
Google OAuth
Google OAuth
Vérification et dépannage
Webhook signature invalid (401)
Webhook signature invalid (401)
- Vérifiez que
DODO_WEBHOOK_SECRETcorrespond à la valeur du tableau de bord Dodo - Confirmez que vous avez déployé la dernière fonction
dodo-webhook - Vérifiez que le nom de l’en-tête est correct dans votre fonction (Dodo-Signature)
Database push fails
Database push fails
- Vérifiez la syntaxe de
DATABASE_URLet la sortie réseau de Supabase - Attendez environ 2 à 3 minutes après la création du projet avant le premier push
OAuth redirect mismatch
OAuth redirect mismatch
- L’URI de redirection doit être
https://[ref].supabase.co/auth/v1/callback - Assurez-vous qu’elle est identique dans Google Cloud et dans le fournisseur Supabase Auth
Vous disposez maintenant d’une structure SaaS d’abonnement fonctionnelle, créée avec Supabase et Dodo Payments.
Dépôt d’origine et étapes détaillées : dodo-supabase-subscription-starter.