Prototype to production: a checklist

A prototype answers whether anyone wants this. Production answers different questions: what happens at a hundred users, when someone tries to read other people's data, when payments fail, and when something that worked yesterday breaks.

In short

Fifteen items in three groups. Before the first real user: the code is in your repository, secrets are on the server, the server checks data access, production data is separate from test data, and a backup actually restores. In the first month: you see errors before a customer reports them, schema changes are versioned, payment notifications have their signature checked, AI spending is capped. As you grow: load, dependencies, documentation and a person who knows the system. Anything in the first group that is not done is better closed before launch, not after.

Before the first real user

#ItemHow to check
1The code is in your repository, not only inside the platformThere is a GitHub or other repository in your name, and it builds the same version that runs on the site
2No secrets in browser codeF12, search for key, secret, token. Anything found, except the Supabase public key, moves to the server and gets revoked
3The server checks data accessA second user tries to open someone else's record by changing the number in the URL. In Supabase, RLS is enabled on every table
4Production database separate from testExperiments and test data never end up in the database where customers live
5A backup restoresNot that backups are taken, but that one was actually restored once and the data checked

Item 5 is the one checked least often. A backup that has never been restored is an assumption, not a backup.

In the first month

#ItemHow to check
6You see errors before customers doError tracking is connected (for example Sentry) and alerts reach a living person
7Schema changes are versionedEvery table change is a migration file in the repository, not a manual edit in the production console
8Payment notifications are verifiedThe webhook checks the payment provider's signature, and a repeated notification does not create a second payment
9AI spending is cappedIf the app calls models: a per-user limit, an overall budget, and an alert when it is exceeded
10Email arrivesThe domain has SPF and DKIM, and signup and password reset emails do not land in spam

As you grow

#ItemHow to check
11Abuse protectionRate limits on signup, login, and expensive operations
12LoadThe most frequent database queries use indexes; a list does not load the whole table
13DependenciesEvery package exists and is maintained, the lock file is in the repository, and known vulnerabilities are fixed
14Law and privacyThe privacy policy matches what the system really collects; in Israel that means Amendment 13
15A person who knows the systemSomeone other than the AI assistant can explain how the system works and how to ship a fix at night

Why in this order

What sets the first group apart is that its mistakes cannot be fixed after the fact. A leaked key has leaked. Other people's data, once read, has been read. A lost database without a tested backup does not come back. Everything else is unpleasant but fixable after launch.

The second group becomes urgent together with money and users: before there are payments, item 8 is not burning, but the first double charge costs more than the check would have.

The third group is about the system outliving its author. Item 15 is the most underrated in AI projects: the code was written fast, and often nobody, including the owner, can explain why it was built this way.

If items are missing

That is normal: a prototype was never supposed to have all of this. The question is what comes next. Usually the answer is one of three: close the gaps in the existing code, rewrite specific parts, or, less often, rewrite the system on the same data model. Which of the three becomes clear after the review, not before.

Frequently asked questions

Can an app built with Lovable or Bolt go to production?

Yes, if the first group is done: code in your repository, secrets on the server, the server checks access, production data separated, backup tested. The platform does not prevent production, but it does not do it for you either.

What is the most dangerous thing in an AI prototype before launch?

Permissions checked only in the interface. The app looks right, but the server runs any user's request against any data. It does not show up in a demo, only in a deliberate attempt.

Do I need to rewrite the prototype from scratch?

Usually not. Most checklist items are closed in the existing code. A rewrite is justified when the data model does not fit the problem or when fixes cost more than a new version.

How long does production readiness take?

It depends on how many items are missing and how many tables and places trust the interface. After a review against this list the time is known item by item.

What if the app already has customers?

Start with items 2, 3 and 5, in that order: secrets, access, backup. They close what cannot be fixed after the fact.

Where to start

Go through the first five items yourself and send the result: which are done, which are not, and which are unclear. That list shows how much work stands between you and launch.

Talk to me

Related: Vibe-coded projects, Security audit for AI code, AI code audit

SLAtech LTD