Production Checklist
Pre-launch checklist for the complete GO-MVP stack
Production Checklist
Verify everything before going live.
Backend
-
APP_ENV=prodis set -
APP_SECRETis a unique random string (not the default) -
DATABASE_URLpoints to the production database - JWT keys are generated and persisted via volume mount
-
JWT_PASSPHRASEmatches the passphrase used to generate keys - Database migrations are applied
- An admin user is created
Stripe
-
STRIPE_SECRET_KEYuses a live key (sk_live_...) -
STRIPE_WEBHOOK_SECRETis set from the production webhook - Stripe webhook is configured with all 5 required events
-
STRIPE_SUCCESS_URLpoints tohttps://yourdomain.com/payment/success -
STRIPE_CANCEL_URLpoints tohttps://yourdomain.com/payment/cancel - Plans are synced (
bin/console app:stripe:sync-plans)
-
BREVO_API_KEYis set with a valid key -
EMAIL_SENDER_EMAILuses a verified sender domain in Brevo - Brevo templates are created with correct IDs
- Test emails are sending correctly
Firebase (if using social login)
-
FIREBASE_PROJECT_IDis set on the backend -
NUXT_PUBLIC_FIREBASE_API_KEYis set on the frontend -
NUXT_PUBLIC_FIREBASE_AUTH_DOMAINis set -
NUXT_PUBLIC_FIREBASE_PROJECT_IDmatches the backend - Production domain is added to Firebase authorized domains
Frontend
-
NUXT_PUBLIC_API_BASE_URLpoints to the production backend - Analytics configured (Umami host + ID, if using)
- CSP headers allow the production API domain
Cross-Project
-
CORS_ALLOW_ORIGINon backend matches the frontend domain -
EMAIL_VALIDATION_REDIRECT_URLpoints to frontend/auth/email-verified -
FRONTEND_RESET_PASSWORD_URLpoints to frontend/auth/reset-password - All redirect URLs use
https://
Infrastructure
- HTTPS is configured on both domains
- DNS records point to the server
- GitHub secrets are set for CI/CD (
DOKPLOY_WEBHOOK_URL) - CI/CD pipeline passes (test → build → deploy)
Smoke Test
After deployment, verify these flows work end-to-end:
- Landing page loads at
https://yourdomain.com - Register a new user
- Check welcome email arrives (via Brevo)
- Login with the new user
- Complete a Stripe test checkout
- Verify subscription appears on profile page
- Test forgot password flow
- Test social login (if configured)
- Access admin panel at
https://api.yourdomain.com/admin