Note: This documentation uses Next.js App Router. If you're still on Pages Router, see the migration guide.

Basic SaaS Setup

Create a simple SaaS with authentication and payments using the Quick Start Stack.

Steps in the UI

  1. Select "Supabase + Stripe SaaS" from Quick Start Stacks
  2. Configure your project name: "my-saas-app"
  3. Set up Supabase environment variables in the auth-supabase modal
  4. Configure Stripe keys in the stripe-core configuration
  5. Click "Create" to generate your project

Modules included: auth-supabase, stripe-core, stripe-subscriptions, db-sqlite

Routes générées

  • /pricing- Page de tarification avec plans Stripe
  • /billing- Gestion des factures et abonnements
  • /auth/login- Page de connexion
  • /auth/signup- Page d'inscription
  • /api/auth/[...nextauth]/route.ts- API NextAuth.js
  • /api/stripe/webhook/route.ts- Webhook Stripe
  • /api/stripe/create-checkout-session/route.ts- Création de session de paiement
  • /api/stripe/create-portal-session/route.ts- Portail client Stripe
  • /dashboard- Tableau de bord utilisateur
  • /api/user/subscription/route.ts- API de gestion des abonnements

.env minimal

# Database
DATABASE_URL="file:./dev.db"

# NextAuth
NEXTAUTH_SECRET="your-secret-key-here"
NEXTAUTH_URL="http://localhost:3000"

# Supabase (si utilisé)
NEXT_PUBLIC_SUPABASE_URL="https://your-project.supabase.co"
NEXT_PUBLIC_SUPABASE_ANON_KEY="your-anon-key"
SUPABASE_SERVICE_ROLE_KEY="your-service-role-key"

# Stripe
STRIPE_SECRET_KEY="sk_test_..."
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY="pk_test_..."
STRIPE_WEBHOOK_SECRET="whsec_..."

Smoke test

curl -I http://localhost:3000

Expected: HTTP/1.1 200 OK

curl -I http://localhost:3000/api/auth/signin

Expected: HTTP/1.1 200 OK

curl -I http://localhost:3000/pricing

Expected: HTTP/1.1 200 OK

curl -X GET "https://api.stripe.com/v1/products" \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/x-www-form-urlencoded"

Expected: HTTP/1.1 200 OK avec liste des produits

Actions déclenchées

Emails de bienvenue

Quand : Après inscription d'un nouvel utilisateur

Voir le résultat :
  • Console de développement (mode développement)
  • Dashboard Resend/Postmark (mode production)
  • Email de test dans `/api/email/preview` (si activé)

Webhooks Stripe

Quand : Événements de paiement (paiement réussi, échec, etc.)

Voir le résultat :
  • Logs dans la console de développement
  • Dashboard Stripe > Webhooks > Logs
  • Base de données locale (SQLite)

Need help?

If you need assistance with this example or have questions about boiler.plate modules, check out our documentation.