Seamplan
plan gallery · webhook

Clerk → Supabase → Stripe

Auth handoff into RLS, then subscription state from Checkout webhooks.

Architecture

  1. 01clerkuser signs in; session minting starts here
  2. 02supabaserls sees a bridged jwt with clerk user id as subject
  3. 03stripecheckout.session.completed upserts subscription row

Env-var matrix

env-var matrix
variabledashboardkindper env?
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYClerkpublishableyes
CLERK_SECRET_KEYClerksecretyes
NEXT_PUBLIC_SUPABASE_URLSupabasepublishableyes
SUPABASE_JWT_SECRETSupabasesigningno
STRIPE_SECRET_KEYStripesecretyes
STRIPE_WEBHOOK_SECRETStripesigningyes

Security checklist

Folders

· src/auth/clerk-supabase.ts
· src/webhooks/stripe.ts
· src/lib/verify.ts
plan a different seamall plans