Production Deployment
Production deployment status, requirements, and checklist.
Production Deployment
STATUS: NOT DEPLOYED
Production application infrastructure is not deployed. DNS records for
getbytebite.co,api.getbytebite.co,dashboard.getbytebite.co,docs.getbytebite.co, andwww.getbytebite.coalready point toward88.99.0.118, but no production application stack, database, or validated configuration exists.
Do not treat DNS existence as production being live.
What exists today
| Item | Status |
|---|---|
| Production DNS records in Cloudflare | Configured (DNS-only) |
| Production Dokploy environment | Not created |
| Production PostgreSQL | Not deployed |
| Production application containers | Not deployed |
| Production object storage (B2) | Not deployed |
| Production mail (SES) | Not configured |
| Production monitoring | Not deployed |
Staging is the only active hosted environment. See Environments.
Expected production differences from staging
| Aspect | Staging (current) | Production (planned) |
|---|---|---|
BYTEBITE_DEPLOY_ENV | staging (Coming Soon, Staging) | production (indexing enabled; Coming Soon, Production). Compose defaults to staging when the variable is absent |
| Domains | *.staging.getbytebite.co; landing apex staging.getbytebite.co (ADR-022, Coming Soon) | getbytebite.co and www.getbytebite.co landing; <slug>.getbytebite.co and custom restaurant domains |
| Demo seeds | Luigi/Mario staging hosts | None |
| noindex | All public apps | Storefront indexable; dashboard remains noindex |
| Object storage | Not deployed | Backblaze B2 (ADR-018) |
| Not configured | AWS SES (transactional) | |
| TLS wildcard | *.staging.getbytebite.co (DNS-01) | Custom-domain strategy TBD |
| PostgreSQL | Dokploy managed (staging) | TBD — likely Dokploy managed |
| Access protection | None | TBD (WAF, rate limiting) |
Production deployment checklist
Infrastructure prerequisites
- Production PostgreSQL backup policy defined, implemented, and tested (staging backup verified separately — see Backups)
- Object storage (Backblaze B2) provisioned with bucket layout defined for application media
- AWS SES configured with verified sending domain
- Mail DNS complete (SPF, DKIM, DMARC, PTR)
- Monitoring and alerting deployed
- Security review completed (WAF, access controls, dot-path fixes)
- Traefik DNS-01 / TLS strategy for production and custom domains
- Dokploy production environment created
- Production secrets configured in Dokploy (no staging values reused)
Application prerequisites
-
BYTEBITE_DEPLOY_ENV=production(the compose default isstaging; an absent value keeps the staging heading and noindex) -
SENTRY_DSNconfigured - Stripe credentials configured (when payments implemented)
- No
seed-staging.jsrun against production database - Migrations applied automatically by the
migrateone-shot incompose.deploy.yml(same file as staging; no env gate). ConfirmExited (0)after the first production deploy. Manual fallback:node db/dist/migrate.js - Full Validation adapted for production domains
DNS cutover
- Verify all production DNS records resolve correctly
- TLS certificates issued for all production hosts
- HTTP → HTTPS redirect verified
- Custom restaurant domain TLS strategy implemented (if launching with custom domains)
Post-deploy validation
- Health endpoints respond
- No staging noindex headers on storefront
- Tenant resolution works on production domains
- Same-origin
/apirouting verified - Backup verification scheduled
Unresolved blockers
See Known gaps for the full register. Critical blockers:
- No production PostgreSQL backup policy (staging backup exists; production not deployed)
- No production object storage for application media
- No production mail (SES)
- No custom-domain TLS implementation
- No monitoring/alerting
- Dokploy Traefik customization survival not automated
Compose pattern
Production will likely reuse compose.deploy.yml with production environment variables and Dokploy domain configuration. The same service pattern (migrate one-shot, api, storefront, dashboard, docs) applies. PostgreSQL, Traefik, and Dokploy remain outside the compose file. The migrate one-shot is not gated by environment; production inherits automatic migrations.
Related
- Infrastructure overview
- Environments
- Staging deployment — active reference environment
- ADR-005 Deployment runtime