These checklists are designed to reduce blind spots before launch. Pick the scenario that is closest to your product instead of enabling every module at once.
Universal checklist
No matter which use case you choose, these five checks almost always matter:npm run env:checkdoes not show active features asfallback mode.npm run buildsucceeds.GET /api/healthmatches expectations for the features that are truly active.- Public navigation does not expose pages that were intentionally disabled.
- Copy, legal pages, and domain configuration match the live brand.
Pick the checklist that fits
Pre-launch waitlist or demand validation
Pre-launch waitlist or demand validation
Core checklist:
NEXT_PUBLIC_ENABLE_WAITLIST=trueNEXT_PUBLIC_ENABLE_AUTH=falseif the full app is not open yetNEXT_PUBLIC_SUPABASE_URLandNEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEYare correct- the
waitlisttable migration is applied /waitlistrenders without an error noticePOST /api/waitlistsuccessfully stores a new email- submitting the same email again shows a clear duplicate response
- contact form is only enabled if
RESEND_API_KEYand sender email are ready - landing page CTA, FAQ, and product promise are aligned with the waitlist funnel
- remove links to dashboard, billing, or login if they are not in use,
- review
roadmap,status, andopenso they do not look like internal placeholders.
Subscription SaaS without AI
Subscription SaaS without AI
Core checklist:
NEXT_PUBLIC_ENABLE_AUTH=trueNEXT_PUBLIC_ENABLE_PAYMENTS=trueNEXT_PUBLIC_ENABLE_ADMIN=trueif you need an internal panel- Supabase public env and
SUPABASE_SERVICE_ROLE_KEYare correct PAYMENT_PROVIDERis set and that provider’s credentials are complete- Supabase redirect URLs use the production domain
- Midtrans or Doku webhooks point to the production domain
/dashboard/billingshows the correct plans- one sandbox payment successfully creates an order and activates the subscription
- cancel and resume both work in a test account
- the admin dashboard can see payments, webhook events, and audit logs
SaaS with AI features
SaaS with AI features
Core checklist:
- the relevant subscription SaaS checklist already passes,
NEXT_PUBLIC_ENABLE_AI=true,AI_DEFAULT_PROVIDERmatches the intended main provider,OPENAI_API_KEYorANTHROPIC_API_KEYis set,- a test user can use
POST /api/ai/chatorPOST /api/ai/generate, - plan token limits and product messaging are aligned,
- the team understands
429behavior for usage and rate limits, - the team understands
503behavior when a provider is not ready, - operators know how to inspect
ai_usagewhen a user complains about limits.
- if AI is a premium feature, pricing and plan copy should explain limits clearly,
- if AI is not core yet, it is safer to keep it off than to ship it half-ready.
Member portal or client area
Member portal or client area
Core checklist:
NEXT_PUBLIC_ENABLE_AUTH=true- payments stay on only if access is sold
- dashboard navigation only shows relevant sections
- login, signup, password reset, and password update all work
/dashboard/settingscan update name and avatar- the role model is clear, even if it still only uses
memberandadmin - marketing pages do not promise public billing if billing is off
- public CTA points to login or access request in the right way
Agency handoff or white-label delivery
Agency handoff or white-label delivery
Core checklist:
- product name, logo, and metadata no longer mention KilatKoding,
- legal page, sample blog posts, status, roadmap, and open startup data have been reviewed,
- sender email and contact inbox belong to the client,
- pricing, CTA, testimonials, and FAQ are client-specific,
- production env is separated per client,
- domain, auth callback, and payment webhooks use the client domain,
- handoff notes explain which features are active and which are intentionally off.
- run one smoke test on the client domain,
- make sure navigation does not show pages the client did not buy or use.
After launch
For the first 24 hours, monitor at least:GET /api/health,- login and signup,
- one main product flow,
- payments and webhooks if payments are active,
- contact or waitlist submissions if public forms are active,
- the admin panel if the internal team uses it.