1
Secrets and API keys
AI tools happily put keys where the code can reach them, which often means the browser. Anyone who opens dev tools can read them, and a leaked key can be used until you notice the bill.
What done looks like
Keys live server-side in environment config, never in the client bundle or the repo. Rotating one is a config change, not a code change.
2
Authentication is not authorisation
Generated apps usually get sign-in right and access control wrong. Users are logged in, and can then read or edit records that belong to someone else by changing an id in the URL.
What done looks like
Every request checks not just who you are, but what this specific user is allowed to touch — enforced server-side, not hidden in the UI.
3
A schema that survives change
Prototypes get a database shaped around the first screen. Once real data arrives, changing it means editing production by hand and hoping nothing was lost.
What done looks like
A modelled schema with versioned migrations, so a change is a reviewable step you can run, repeat and roll back.
4
Validation and error handling
Demos assume good input. Real users paste emoji into number fields, double-click submit, and lose connection halfway through a payment.
What done looks like
Input validated at the boundary, failures handled deliberately, and errors that tell you what happened instead of a blank screen.
5
Separate environments
If there is one copy of everything, then testing a change means testing it on your customers, and a bad afternoon means real data is gone.
What done looks like
Local, staging and production kept apart, with their own data and config, so changes are proven before anyone sees them.
6
Backups you have actually restored
Most early projects have no backups. The ones that do have never tested a restore, which is the same thing with extra confidence.
What done looks like
Automated backups with a restore that has been run at least once, so you know the recovery path works before you need it.
7
Knowing when it breaks
Without monitoring, your alerting system is a customer sending an annoyed message — usually hours after it started.
What done looks like
Error tracking and uptime checks that tell you first, with enough context to find the cause instead of guessing.
8
Deploys you can undo
Dragging files onto a server works until the day a deploy breaks the site and there is no way back except fixing it live under pressure.
What done looks like
A repeatable deploy from source control, and a rollback that takes a minute rather than an evening.