Skip to main content

Before you run the project

Do not start with npm run dev right away. Decide first which features you actually want to use. KilatKoding is intentionally broad, but not every product needs every module.

Choose the path that fits you

If you are non-technical

Use this documentation to:
  • understand which pages and features are already included,
  • prepare the service accounts that the product needs,
  • give clear direction to a developer or AI coding assistant.

If you are a developer

Use this documentation to:
  • choose which features stay enabled,
  • fill out .env.local,
  • run Supabase migrations,
  • adjust branding and pricing,
  • verify build, test, and deployment.

Early decision checklist

DecisionOptionsImpact
AuthEnabled or disabledControls login, signup, dashboard, settings, and admin access
PaymentsMidtrans, Doku, or disabledControls billing, checkout, and webhooks
Contact formEnabled or disabledDetermines whether you need Resend for contact submissions
WaitlistEnabled or disabledDetermines whether the waitlist page is part of the product
AIEnabled or disabledDetermines whether you need OpenAI or Anthropic keys
AdminEnabled or disabledDetermines whether the admin panel and role management are active

Service accounts you may need

ServiceRequired?Used for
SupabaseYes, if auth or app data is activeAuth, database, profile, subscriptions, payments, waitlist, audit, and rate limits
ResendOptionalContact form, welcome email, invoice email
MidtransOptionalCheckout with Snap
DokuOptionalCheckout with JOKUL
OpenAI or AnthropicOptionalAI features

Fast setup playbooks

If you do not want to read every page from the start, use one of these paths first and then go deeper into the linked docs.
GoalCommon starting togglesMinimum servicesRead next
Validate an idea with a waitlist firstAuth off, Waitlist on, Contact optional, Payments off, Admin off, AI offSupabase, optionally ResendKilatKoding use cases, Services setup, Customization
Subscription SaaS without AIAuth on, Payments on, Admin on, Contact optional, AI offSupabase + Midtrans or DokuServices setup, Environment variables, Testing and deployment
SaaS with AI featuresAuth on, Payments optional, Admin on, AI onSupabase + OpenAI or Anthropic, plus a payment provider if you charge subscriptionsAI and tooling, Services setup, Environment variables
Member portal or client portalAuth on, Payments optional, Admin optional, Contact optional, AI offSupabaseCustomization, Components and UI, Architecture
The on and off labels above refer to the NEXT_PUBLIC_ENABLE_* toggles documented in Environment variables. If you want a starting point you can copy directly into .env.local, also open Preset recipes by use case.

AI prompt you can use right away

I want to set up KilatKoding for this product:

[describe the use case, desired active features, payment provider, AI provider, and who will perform the setup]

Please help me create a clear setup plan:
1. Which early decisions I should make first
2. Which service accounts need to be prepared
3. The safest setup order
4. Which docs pages I should read next
5. A verification checklist after local setup is complete

Separate which steps are fine for a non-technical user and which steps need a developer.
1

Decide which features stay active

Choose the modules you want to use. Later you will control them through NEXT_PUBLIC_ENABLE_* values in .env.local.
2

Prepare service accounts

Create a Supabase project first. Add Resend, Midtrans, Doku, or an AI provider only if your product will actually use them.
3

Run local setup

Follow Local setup for your operating system.
4

Fill environment variables

Use Environment variables as the main reference while filling .env.local.
5

Verify readiness

Run npm run env:check, then check GET /api/health after the app is running.

What success should look like

Before you start large customization work, make sure these basics already work:
  • the landing page loads,
  • the auth flow works or is intentionally disabled,
  • the dashboard opens for logged-in users,
  • the payment flow works if you kept payments enabled,
  • npm run lint, npm run typecheck, and npm test do not fail.
It is completely normal to enable only part of the boilerplate. KilatKoding is designed so unused areas can be turned off through toggles and show a clear fallback state.