AI coding tools are incredible at getting you to 90%. The last 10% - secrets management, database access controls, rate limiting, backups - is where real apps fail in production. This checklist covers the 15 things AI tools consistently get wrong, with specific fixes for each one. Works regardless of where you host.
git log -p | grep -iE "api_key|password|secret|token" before pushing. If you find one, rotate it immediately - deleting from git history alone is not enough if it was ever pushed.SELECT tablename, rowsecurity FROM pg_tables WHERE schemaname='public'; to check your current state.ufw deny from any to any port 5432 and only allow your app server's private IP.user: postgres, password: postgres. Change these before going live. Generate a strong password with openssl rand -base64 32, update your database user, update your connection string, and restart your app.pg_dump to a separate storage location (S3, Backblaze B2) on a daily cron. A backup you've never tested is not a backup.restart: unless-stopped to your compose file. On a raw VPS: use systemd with Restart=always to manage the process.For infrastructure items, the question to ask your provider is: "Do you handle X by default, or do I configure it myself?" Different hosts give different answers. Railway includes restart-on-crash but no WAF. Cloudflare protects you at the network edge but doesn't know about your app. A full-stack managed host handles the infrastructure layer end-to-end. Whatever you're on - know what's covered and what you still own.
If you'd rather not configure WAF rules, set up backup cron jobs, or choose between twelve monitoring tools - a full-stack managed host handles those by default. vmfarms runs on dedicated hardware with WAF, rate limiting, container scanning, uptime monitoring, intrusion detection, and automated backups included for every app we host.
Ask us what we cover