Production Checklist
Before launching your application to real users, go through this checklist to make sure everything is properly configured.
Application
- Standalone output (Next.js) — add
output: 'standalone'tonext.config.jsfor faster deploys and lower memory usage - Environment variables — all required variables are set in the Stackpad dashboard (not just locally in
.env) -
NODE_ENV=production— set at the project level - Error handling — your app handles errors gracefully and doesn’t expose stack traces
- Health check — your app responds to HTTP requests on the configured port within a few seconds of starting
Database
- Migrations — database migrations run automatically (during build or on startup)
- Connection pooling — use a connection pool or PgBouncer for high-traffic apps
- Indexes — critical queries have appropriate database indexes
- Backups verified — check the Backups tab to confirm backups are running
- Point-in-time recovery (Pro+) — enable PITR for PostgreSQL to restore to any second
- Performance tuning — review auto-tuned parameters in service Settings, override if needed
Custom domain
- Domain added — add your custom domain in the Domains page
- Ownership verified — TXT record (
_stackpad-verify.yourdomain.com) is in place - DNS configured — CNAME (subdomains) or A record (root domain) pointing to Stackpad
- DNS verified — Stackpad shows a green checkmark on the domain
- HTTPS working — certificate is provisioned (happens automatically after DNS verification)
- Redirect configured —
www→ root domain (or vice versa) using a redirect domain
Security
- Secrets are not in code — API keys, passwords, and tokens are in environment variables, not committed to git
- Database not public — public access is disabled on production databases (Settings → Public access off)
- HTTPS only — Stackpad handles this automatically, but verify your app doesn’t hardcode
http://URLs - 2FA enabled — enable two-factor authentication for all team members
- Admin tools protected — mark admin panels and dashboards as protected services
- Roles reviewed — verify team members have the correct RBAC roles
Monitoring
- Logs working — check the Logs tab to verify your app is producing logs
- Error tracking — consider adding Sentry or a similar tool for error alerting
- Uptime monitoring — consider setting up an external uptime check (or deploy the Uptime Kuma template)
Team
- Team members invited — all developers have access with appropriate roles
- GitHub connected — the deploying user’s GitHub is connected with access to the repository
Scaling & reliability
- Replicas configured (Pro+) — enable horizontal scaling for critical services
- Geo-spread — distribute replicas across EU datacenters for geographic redundancy
- Scale-to-zero — configure for non-production environments to save resources
- Dedicated infrastructure — consider dedicated servers for production workloads
Performance
- Build succeeds quickly — builds should complete well within the 10-minute timeout
- Startup is fast — your app should start responding within 30 seconds (90-second health check timeout)
- Memory is within limits — check your plan’s memory allocation matches your app’s needs
What’s next?
- Custom domains — set up your domain
- Logging — monitor your application
- Troubleshooting — when things go wrong