Skip to main content

Start with these two checks

Before you debug further, run:
and inspect:
Those two checks are usually enough to tell you whether the issue comes from env config, feature toggles, or database connectivity.

Common issues

Check NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY.If the auth page now shows a configuration notice, it usually means auth is intentionally disabled by toggle or the Supabase public env is incomplete.After editing .env or .env.local, restart npm run dev and then run npm run env:check again.If auth is intentionally not part of the product yet, set:
This usually means SUPABASE_SERVICE_ROLE_KEY is missing. Billing, webhooks, signed avatar URLs, audit logs, admin reporting, and persistent rate limits all depend on it.
Check:
  • NEXT_PUBLIC_ENABLE_PAYMENTS
  • PAYMENT_PROVIDER
  • your Midtrans or Doku credentials
  • the payments and subscriptions migrations
This usually means the webhook never arrived, the webhook URL is wrong, or signature verification failed. Check the correct webhook route and confirm the production domain is set correctly.
Check RESEND_API_KEY, EMAIL_FROM, and optionally CONTACT_EMAIL. Make sure the sender domain is verified in Resend.
503 usually means the provider is not configured. 429 usually means a usage limit or request rate limit has been reached.
Make sure the user exists in user_roles with the admin role. ADMIN_EMAILS only helps with the initial bootstrap.
Install the browser first:

AI prompt you can use right away

Fast diagnosis checklist

When to check the database directly

Look at the database directly if the issue involves:
  • user roles,
  • subscription status,
  • payment records,
  • audit trail,
  • webhook event logs.
The most likely tables to inspect are user_roles, subscriptions, payments, audit_logs, and webhook_events.

When to inspect code

Go into the code if:
  • env values look correct but the behavior is still wrong,
  • you recently changed config/*,
  • you edited a route handler or dashboard component,
  • you added a new integration on top of the existing patterns.
If you are doing a large rebrand, some issues that look like bugs are really just copy, navigation, or feature-toggle mismatches that have not been aligned yet.