Hoppa till huvudinnehåll

Översikt

Ett produktionsklart boilerplate för prenumerationer med Next.js 15, React 19, Supabase, Drizzle ORM och Dodo Payments. Det levereras med Google OAuth, prenumerationskassa, webhook-hantering, databasstruktur och en grundläggande instrumentpanel.
Om du bara behöver ruttshanterare för en befintlig app, se de dedikerade adaptrarna: Next.js Adaptor och Express Adaptor.

Förutsättningar

  • Node.js 18+ (eller Bun 1.0+)
  • Supabase-projekt (URL, Anon-nyckel, Service roll-nyckel, Databas-URL)
  • Dodo Payments-konto (API-nyckel, Webhook-hemlighet)
  • Google Cloud OAuth-klient (Klient-ID och hemlighet)

Snabbstart

1

Klona och installera

git clone https://github.com/dodopayments/dodo-supabase-subscription-starter.git
cd dodo-supabase-subscription-starter
# choose one
bun install
# or
npm install
# or
pnpm install
2

Skapa Supabase-projekt

Skapa ett Supabase-projekt och kopiera:
  • NEXT_PUBLIC_SUPABASE_URL
  • NEXT_PUBLIC_SUPABASE_ANON_KEY
  • SUPABASE_SERVICE_ROLE_KEY
  • DATABASE_URL (Anslutningssträng)
3

Konfigurera Google OAuth

Ställ in omdirigerings-URI till: https://[your-project-ref].supabase.co/auth/v1/callback i Google Cloud, aktivera sedan Google-leverantör i Supabase Auth med ditt Klient-ID och hemlighet.
4

Konfigurera Dodo Payments

Generera en API-nyckel och Webhook-hemlighet från Dodo-instrumentpanelen. Ställ in miljön till test_mode under utveckling.
5

Skapa .env.local

# Supabase
NEXT_PUBLIC_SUPABASE_URL=https://your-project-ref.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role

# Database
DATABASE_URL=postgresql://postgres:[password]@db.[project-ref].supabase.co:5432/postgres

# Dodo Payments
DODO_PAYMENTS_API_KEY=your-dodo-api-key
DODO_WEBHOOK_SECRET=your-webhook-secret
DODO_PAYMENTS_ENVIRONMENT=test_mode
Kom aldrig ihåg hemligheter. Använd miljövariabler i distributionsmiljöer.
6

Provisionera databasstruktur

bun run db:push
# or
npm run db:push
# or
pnpm run db:push
Tabeller skapade: users, subscriptions, payments.
7

Distribuera webhook-funktion

# login (one-time)
bunx supabase login
# or
npx supabase login

# deploy the edge function
bun run deploy:webhook --project-ref [your-project-ref]
# or
npm run deploy:webhook -- --project-ref [your-project-ref]
# or
pnpm run deploy:webhook --project-ref [your-project-ref]
cURL
curl -X POST \
  'https://[your-project-ref].supabase.co/functions/v1/dodo-webhook' \
  -H 'Content-Type: application/json' \
  -H 'Dodo-Signature: <signature>' \
  -d '{"type":"payment.succeeded","data":{}}'
8

Lägg till webhook i Dodo Payments

Ställ in slutpunkts-URL till:
https://[your-project-ref].supabase.co/functions/v1/dodo-webhook
Välj betalnings- och prenumerationsevenemang.
9

Skapa produkter och funktioner

I Dodo-instrumentpanelen → Produkter → Skapa produkt. Valfritt, lägg till metadata:
{
  "features": ["Feature 1", "Feature 2", "Feature 3"]
}
Prissättnings-UI läser denna features array och renderar den dynamiskt.
10

Kör utvecklingsservern

bun run dev
# or
npm run dev
# or
pnpm run dev
Öppna http://localhost:3000.

Vad som ingår

  • Autentisering via Supabase (Google OAuth konfigurerad)
  • Prenumerationskassa via Dodo Payments
  • Supabase Edge Function för webhooks (dodo-webhook)
  • Drizzle ORM-schema och migrationer
  • Instrumentpanel med fakturor, prenumerationsstatus och planfunktioner
Håll DODO_PAYMENTS_ENVIRONMENT som test_mode tills du har slutfört end-to-end tester.

Nyckelfiler och sökvägar

supabase/functions/dodo-webhook/
  index.ts            # webhook handler verifying signatures
  deno.json           # permissions

Miljövariabler

NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
DATABASE_URL=
DODO_PAYMENTS_API_KEY=
DODO_WEBHOOK_SECRET=
DODO_PAYMENTS_ENVIRONMENT=test_mode|live_mode
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=

Verifiering och felsökning

  • Se till att DODO_WEBHOOK_SECRET matchar värdet från Dodo-instrumentpanelen
  • Bekräfta att du har distribuerat den senaste dodo-webhook funktionen
  • Verifiera att headernamnet är korrekt i din funktion (Dodo-Signature)
  • Kontrollera DATABASE_URL syntax och Supabase nätverksutgång
  • Vänta ~2–3 minuter efter projektets skapande innan första push
  • Omdirigerings-URI måste vara https://[ref].supabase.co/auth/v1/callback
  • Se till att samma i Google Cloud och Supabase Auth-leverantör
Du har nu en fungerande prenumerations-SaaS som är skapad med Supabase och Dodo Payments.
Originalrepository och detaljerade steg: dodo-supabase-subscription-starter.