Guide
Production readiness checklist for AI-built apps
AI tools produce working apps quickly, and the gaps they leave are consistent. This checklist covers what to confirm before real users arrive, and marks which items an outside check can settle for you and which need a person with access.
Transport and certificate
http requests redirect to https
Outside checkDone looks like: every plain http address returns a redirect to the https version of the same page.
The certificate is valid and not close to expiry
Outside checkDone looks like: the certificate matches the hostname, chains correctly, and has weeks of life left.
Renewal is automatic
Human reviewDone looks like: you know which service renews the certificate and what happens if it fails.
Response headers
A content security policy is present
Outside checkDone looks like: the app sends a policy that names where scripts, styles and connections may come from.
Strict transport security is set
Outside checkDone looks like: the header is sent on https responses with a sensible max age.
Framing and content type sniffing are controlled
Outside checkDone looks like: frame ancestors are restricted and content type options are set to nosniff.
Referrer and permissions policies are deliberate
Outside checkDone looks like: both headers are present and reflect a decision you made, not a default.
Exposed files and paths
Source maps are not public
Outside checkDone looks like: the map files referenced by your bundles are not reachable from the internet.
No server secrets in client bundles
Outside checkDone looks like: only publishable keys appear in the JavaScript you ship. Service keys live server side.
Common sensitive paths return nothing useful
Outside checkDone looks like: environment files, backups, admin panels and debug endpoints are absent or protected.
Data and access
Every table has row level policies that match the intent
Human reviewDone looks like: each policy is written per operation and tested with a second account.
One account cannot read another account's rows
Human reviewDone looks like: you tried it with two real sessions and saw an empty result.
Roles are stored separately from profiles
Human reviewDone looks like: role changes require a privileged path, not an ordinary profile update.
Payments
The webhook verifies its signature
Human reviewDone looks like: an unsigned or altered payload is rejected before anything is written.
Repeat events do not grant twice
Human reviewDone looks like: replaying the same event leaves the account in the same state.
Entitlement is written server side
Human reviewDone looks like: the client never decides what a customer has paid for.
Operations
You can see errors from real users
Human reviewDone looks like: server and client errors reach somewhere a person looks at least daily.
You have a restore, not just a backup
Human reviewDone looks like: you have restored a copy of the database somewhere safe and it worked.
You can roll back a bad release
Human reviewDone looks like: the previous version can be served again without a rebuild scramble.
Someone owns the first hour after launch
Human reviewDone looks like: a named person is watching, with access to fix or revert.
Start with the items an outside check can settle in about twenty seconds.
ShipReady is not a penetration test or a security certification. No automated check can prove an application is secure.
