Configuration

Env keys the server expects, plus the config files people touch first when rebranding.

Environment variables

Copy the template:

cp .env.local.example .env.local

Required (local dev)

NEXT_PUBLIC_SUPABASE_URL=...
NEXT_PUBLIC_SUPABASE_ANON_KEY=...
SUPABASE_SERVICE_ROLE_KEY=...
NEXT_PUBLIC_APP_URL=http://localhost:3000

Optional (but recommended in production)

Stripe

STRIPE_SECRET_KEY=sk_...
STRIPE_WEBHOOK_SECRET=whsec_...
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_...
NEXT_PUBLIC_STRIPE_PRO_MONTHLY_PRICE_ID=price_...
NEXT_PUBLIC_STRIPE_PRO_YEARLY_PRICE_ID=price_...
NEXT_PUBLIC_STRIPE_ENTERPRISE_MONTHLY_PRICE_ID=price_...
NEXT_PUBLIC_STRIPE_ENTERPRISE_YEARLY_PRICE_ID=price_...

See Stripe Setup.

Resend (invitations)

RESEND_API_KEY=re_...
EMAIL_FROM="YourApp <noreply@yourdomain.com>"

See Resend Setup.

Supabase Auth URL configuration

In Supabase → Authentication → URL Configuration:

  • Site URL: your app URL (e.g. http://localhost:3000 or https://yourapp.com)
  • Redirect URLs: add https://yourapp.com/auth/callback (and local http://localhost:3000/auth/callback)

If these are wrong, you’ll usually see OAuth redirect errors or sign-in loops.

Where to customize

  • Brand: src/config/brand.ts
  • UI content: src/config/ui/*
  • Routes: src/config/routes.ts
  • Pricing: src/config/pricing.ts
  • Docs navigation: src/config/docs.ts