Skip to main content
The presets on this page are starting points. After copying the initial toggles, you still need to clean up CTA copy, navigation, pricing, and page content so they match the features that actually stay enabled.

How to use this page

  1. Pick the scenario closest to your product.
  2. Copy the starting toggles into .env.local.
  3. Fill the minimum env vars for the services you need.
  4. Connect the relevant providers through Services setup.
  5. Run npm run env:check, then continue to Launch checklists.

Pick the closest preset

PresetMain focusMost important togglesMinimum services
Waitlist firstValidate demand and audienceAuth off, Waitlist on, Payments offSupabase, optionally Resend
Subscription SaaSBilling and user dashboardAuth on, Payments on, Admin onSupabase + Midtrans or Doku
Member or client portalGated area without public billingAuth on, Payments offSupabase
Paid AI SaaSAI product with plan-based accessAuth on, AI on, Payments onSupabase + AI provider + payment provider
White-label agency baseFast rebranding for client workAuth on, Contact on, Payments optionalSupabase, optionally Resend

Presets you can use right away

Good for: idea validation, pre-launch landing pages, or waitlist campaigns.Starting toggles
NEXT_PUBLIC_ENABLE_AUTH=false
NEXT_PUBLIC_ENABLE_WAITLIST=true
NEXT_PUBLIC_ENABLE_CONTACT=true
NEXT_PUBLIC_ENABLE_PAYMENTS=false
NEXT_PUBLIC_ENABLE_ADMIN=false
NEXT_PUBLIC_ENABLE_AI=false
Minimum env
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=
NEXT_PUBLIC_APP_URL=http://localhost:3000

RESEND_API_KEY=
EMAIL_FROM=
Do not forget
  • Remove CTA paths that point to login, dashboard, paid pricing, or AI features.
  • If you do not need the contact form yet, you can set NEXT_PUBLIC_ENABLE_CONTACT=false and remove RESEND_API_KEY.
  • The main customization work usually happens in the landing page, hero copy, waitlist CTA, and FAQ content.
Open next: KilatKoding use cases, Customization, and Launch checklists.
Good for: most classic SaaS products with user accounts, dashboards, and billing.Starting toggles
NEXT_PUBLIC_ENABLE_AUTH=true
NEXT_PUBLIC_ENABLE_WAITLIST=false
NEXT_PUBLIC_ENABLE_CONTACT=true
NEXT_PUBLIC_ENABLE_PAYMENTS=true
NEXT_PUBLIC_ENABLE_ADMIN=true
NEXT_PUBLIC_ENABLE_AI=false
Minimum env
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=
SUPABASE_SERVICE_ROLE_KEY=
NEXT_PUBLIC_APP_URL=http://localhost:3000

PAYMENT_PROVIDER=doku
DOKU_CLIENT_ID=
DOKU_SECRET_KEY=

# Or switch to Midtrans
# PAYMENT_PROVIDER=midtrans
# MIDTRANS_SERVER_KEY=
# NEXT_PUBLIC_MIDTRANS_CLIENT_KEY=

RESEND_API_KEY=
EMAIL_FROM=
ADMIN_EMAILS=you@example.com
Do not forget
  • Start with one payment provider. You do not need Midtrans and Doku at the same time.
  • SUPABASE_SERVICE_ROLE_KEY matters for server-only writes such as billing, webhooks, audit logs, and signed avatar URLs.
  • If the contact form is not part of the product, you can turn NEXT_PUBLIC_ENABLE_CONTACT off.
Open next: Services setup, Environment variables, and Testing recipes.
Good for: member areas, student dashboards, agency client portals, or internal workspaces.Starting toggles
NEXT_PUBLIC_ENABLE_AUTH=true
NEXT_PUBLIC_ENABLE_WAITLIST=false
NEXT_PUBLIC_ENABLE_CONTACT=false
NEXT_PUBLIC_ENABLE_PAYMENTS=false
NEXT_PUBLIC_ENABLE_ADMIN=false
NEXT_PUBLIC_ENABLE_AI=false
Minimum env
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=
NEXT_PUBLIC_APP_URL=http://localhost:3000
Optional when needed
SUPABASE_SERVICE_ROLE_KEY=
NEXT_PUBLIC_ENABLE_ADMIN=true
ADMIN_EMAILS=ops@example.com
Do not forget
  • The main customization work usually happens in dashboard navigation, permissions, and your product-specific data model.
  • If you need signed avatar URLs, audit logs, or admin reporting, add SUPABASE_SERVICE_ROLE_KEY.
  • Because payments stay off, remove upgrade CTA copy, checkout links, and subscription promises.
Open next: Components and UI, Architecture, and Database map.
Good for: AI writing tools, internal copilots, content generators, or paid AI workflows.Starting toggles
NEXT_PUBLIC_ENABLE_AUTH=true
NEXT_PUBLIC_ENABLE_WAITLIST=false
NEXT_PUBLIC_ENABLE_CONTACT=false
NEXT_PUBLIC_ENABLE_PAYMENTS=true
NEXT_PUBLIC_ENABLE_ADMIN=true
NEXT_PUBLIC_ENABLE_AI=true
Minimum env
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=
SUPABASE_SERVICE_ROLE_KEY=
NEXT_PUBLIC_APP_URL=http://localhost:3000

PAYMENT_PROVIDER=midtrans
MIDTRANS_SERVER_KEY=
NEXT_PUBLIC_MIDTRANS_CLIENT_KEY=

AI_DEFAULT_PROVIDER=openai
OPENAI_API_KEY=

ADMIN_EMAILS=you@example.com
Alternative AI provider
AI_DEFAULT_PROVIDER=anthropic
ANTHROPIC_API_KEY=
Do not forget
  • Align pricing and plan quotas with actual AI cost, not only with the marketing copy.
  • Clean up error handling for rate limits, provider failures, and plan limits before launch.
  • If AI is a premium feature, make sure trial CTA copy, billing, and output guardrails are aligned.
Open next: AI and tooling, End-to-end flows, and Operational runbook.
Good for: client projects that need a landing page, auth, a basic dashboard, and fast rebranding.Starting toggles
NEXT_PUBLIC_ENABLE_AUTH=true
NEXT_PUBLIC_ENABLE_WAITLIST=false
NEXT_PUBLIC_ENABLE_CONTACT=true
NEXT_PUBLIC_ENABLE_PAYMENTS=false
NEXT_PUBLIC_ENABLE_ADMIN=false
NEXT_PUBLIC_ENABLE_AI=false
Minimum env
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=
NEXT_PUBLIC_APP_URL=http://localhost:3000

RESEND_API_KEY=
EMAIL_FROM=
Enable this if the client later needs billing
NEXT_PUBLIC_ENABLE_PAYMENTS=true
NEXT_PUBLIC_ENABLE_ADMIN=true
SUPABASE_SERVICE_ROLE_KEY=
PAYMENT_PROVIDER=doku
DOKU_CLIENT_ID=
DOKU_SECRET_KEY=
Do not forget
  • Rebranding is more than a logo. Update navigation, legal pages, pricing, email sender, and CTA copy too.
  • Turn off modules that are outside the client scope so handover stays cleaner.
  • Treat this preset as a reusable base, then split it further for each client need.
Open next: Rebranding recipes, Feature toggle matrix, and Testing and deployment.

Common mistakes when using presets

  • Turning NEXT_PUBLIC_ENABLE_PAYMENTS=true on without PAYMENT_PROVIDER and valid provider credentials.
  • Turning NEXT_PUBLIC_ENABLE_AI=true on without AI_DEFAULT_PROVIDER and the correct API key.
  • Leaving navigation, CTA copy, or marketing promises in place for features that have actually been turned off.
  • Treating a preset as a final architecture instead of a safe starting point.

AI prompt you can use right away

I want to use KilatKoding for this use case:

[describe the use case, active features, payment provider, AI provider, and whether admin is needed]

Please help me create:
1. A starting `.env.local` draft
2. Which feature toggles should be on and off
3. Which services are required
4. The safest setup order
5. How to verify the setup is correct

If you have repo access, inspect the relevant docs and config files before answering.
If you are still choosing between two presets, read KilatKoding comparison first. Then open Feature toggle matrix to see how each env combination changes the UI, routes, and fallback behavior.