whocanfixmyapp
Production checklist · 24 checks · updated October 2026

Is your AI-built app ready for real users?

Answer each check Yes, No or Not sure. The five critical checks decide the verdict: one No or Not sure means the app should not take real users or payments yet. Your answers stay in this browser.

DATA

Data and access

Anyone who opens the browser's developer tools can often read or change data that belongs to other people.

DATA-01Critical

Access rules are on for every table

In Supabase, open Table Editor: every table should show RLS enabled, with at least one policy. In Firebase, your rules should never say allow read, write: if true.

DATA-02Critical

No secret keys reach the browser

Open your live app, then DevTools, Sources, and search the loaded JavaScript for sb_secret_, sk_live_, sk-proj- and sk-ant-. Older Supabase keys are long tokens starting with eyJ: decode the middle part of each on your own machine, and if it contains "role":"service_role", your secret key is public. A publishable or anon key in the browser is expected.

DATA-03Critical

One user cannot open another user's records

Sign in as user A, copy a request from the Network tab, and change the record ID to one that belongs to user B. You should get an error or an empty result.

DATA-04High

File storage is private where it should be

Upload a private file, copy its URL, and open it in a private window. If it loads, the bucket is public.

DATA-05High

Admin actions are checked on the server

Hiding an admin button is not protection. Call the admin endpoint as a normal user and confirm it is refused.

AUTH

Sign-in and accounts

Sign-in usually works on the happy path and fails on the second day: reset emails, expired sessions, bots.

AUTH-01High

Sign-up confirmation and password reset work end to end

Use a real inbox. Check that the link arrives, points to your live domain, and works once.

AUTH-02High

Signing out really ends the session

Sign out, press Back, and refresh. You should not see private pages or data.

AUTH-03Medium

Sign-in and sign-up are rate limited

Without limits, bots create thousands of accounts and run up your email and AI bills.

PAY

Logic and payments

The demo path works. Real customers take the other paths: failed cards, refunds, double clicks.

PAY-01Critical

Paid accounts are unlocked by a verified payment webhook

Access should change only when your server receives a signed webhook from Stripe or your provider, not when the browser reaches a success page.

PAY-02High

Prices and plans come from the server

If the price or plan ID is sent from the browser, someone can edit it. The server should look it up.

PAY-03High

Input is validated on the server

Forms that only check input in the browser accept anything sent directly to the API.

PAY-04Medium

Failed payments, cancellations and refunds are tested

Use your provider's test cards for declines and disputes, then check what the user sees and what access they keep.

CODE

Code you can maintain

Each new prompt fixes one thing and breaks another, because nobody, the AI included, knows how the parts fit.

CODE-01High

The code lives in a Git repository you own

Connect GitHub or export the project. If the builder account is lost, the product should not be.

CODE-02Medium

The flows that make money have tests

Sign-up, checkout and the core action. A few end-to-end tests catch most regressions from new prompts.

CODE-03Medium

Dead code and duplicate components are removed

Search for components with near-identical names. Three versions of one button means three places to fix every bug.

CODE-04Medium

Dependencies are current and audited

Run npm audit. Critical advisories in packages you ship should be fixed before launch.

OPS

Hosting and recovery

Many AI-built apps run on a preview link with no backups, no alerts and one database for testing and real users.

OPS-01Critical

Database backups run automatically and a restore has been tested

Check what your database plan actually includes, then restore a backup into a test project once.

OPS-02High

Testing and real users use separate databases

Experiments and AI agents should never run against production data.

OPS-03High

Errors reach you before users do

Add error monitoring and uptime alerts. If you learn about outages from customers, this is missing.

OPS-04Medium

Secrets live in the host's environment settings

Keys belong in environment variables on the server, not in the repository or in front-end code.

COST

Speed and running costs

Fine with ten test users. Slow and expensive with a thousand real ones.

COST-01High

AI and paid API calls have per-user limits

Without a cap, one user or one bot loop can spend your monthly budget in an hour.

COST-02Medium

Database columns you filter on are indexed

Queries that scan whole tables are fast at 100 rows and slow at 100,000.

COST-03Medium

Key pages load fast on a phone

Run PageSpeed Insights on the home page and the main app screen, on mobile.

COST-04Medium

Images are resized and compressed

Uploaded photos served at full size are a common cause of slow pages.

Questions

How do I know if my AI-built app is ready for production?

It is ready when every critical check passes: access rules on every table, no secret keys in the browser, users kept apart from each other, payments confirmed by a server webhook, and backups you have restored at least once.

How long does this checklist take?

The five critical checks take an afternoon if you can open your database dashboard and your browser's developer tools. The full list takes longer, because some checks need a second test account and a test payment.

What if I can't answer a check?

Answer Not sure. A check you can't confirm counts as open, because the risk is the same.