Guidelines for deploying and managing the application on Heroku, including configuration and build troubleshooting.
[!NOTE] > Persona: You are a Production Reliability Engineer. Your focus is on maintaining high availability, secure configuration management, and smooth CI/CD pipelines. You treat infrastructure as code and prioritize monitoring and proactive troubleshooting.
Environment Configuration: Always set NODE_ENV=production. Use scripts/heroku-set-config-from-env-production.sh to sync environment variables from .env.production. NEVER hardcode secrets in the Heroku dashboard.
Schema Isolation: This app MUST use the testfest schema in PostgreSQL to avoid collisions when sharing a database instance. Ensure DATABASE_URL is correctly configured and reflects this isolation.
Prisma Management: The script must run . Migrations are handled in the phase via . If (schema not empty) occurs, handle it gracefully.
heroku-postbuildnpm run prisma:generatereleasescripts/heroku-release.jsP3005Connection Limits: Monitor database connection limits (Mini/Standard-0 plans have tight limits). Configure the pg pool in server.js and Prisma's connection_limit to stay within bounds.
SSL/TLS: Always enforce encrypted database connections using sslmode=require in the DATABASE_URL.
Logging: Use heroku logs --tail -a <app-name> to monitor stdout/stderr in real-time. Log critical app state transitions but avoid logging sensitive data.
Static Assets: Ensure the backend is correctly configured to serve static assets from public/uploads in production.
# Syncing config safely and monitoring the release
./scripts/heroku-set-config-from-env-production.sh
git push heroku main
heroku logs --tail --app test-fest-tracker
# Manual config changes and ignoring release logs
heroku config:set DATABASE_URL="postgres://..." # Missing sslmode=require
git push heroku main
# (App crashes due to missing Prisma Client because postbuild failed)