Production Readiness
From Prompt to Production: The Backend Checklist for AI-Built Apps
A practical checklist for developers using coding agents to complete authentication, PostgreSQL data, file storage, permissions, environments, and secure AI access.
A working prototype is the start of the checklist
A coding agent can turn a product prompt into a convincing application with surprising speed. That changes how developers begin projects, but it does not remove the work required to make a product trustworthy.
The first generated version often answers visual questions: What screens exist? How does navigation work? What does a result look like? Production introduces a different set of questions:
- Who is the current user?
- Which data may that user read or change?
- Where does the data persist?
- Who can retrieve an uploaded file?
- Where are external API credentials stored?
- How is unfinished work separated from the live application?
- What system continues operating after the coding agent finishes?
Those are backend questions. They are also product questions, because their answers determine what users can trust the application to do.
This checklist presents a workflow for human developers using coding agents such as Codex, Claude Code, or other development agents with Zeple. It is not a replacement for developer review. It is a way to give the agent a complete, reviewable path from prompt to production.
Step 1: Define the product boundary
Before asking an agent to connect a backend, describe the product in terms of users, resources, and permissions.
Consider a project-management app. “Users can create tasks” is incomplete. Better requirements answer:
- Can anyone create an account?
- Does each user have private projects?
- Can a project have multiple members?
- Which members can invite others?
- Who can create, edit, and delete tasks?
- Can a task include private attachments?
- Does an AI assistant summarize project activity?
The clearer these decisions are, the less architectural guesswork the coding agent must perform.
Developer checklist
- List the types of users.
- List the core data models.
- Identify ownership and organization relationships.
- Define which actions require authentication.
- Define which roles may perform sensitive actions.
- Identify files and external API calls.
- Decide what must be tested before release.
The developer owns these decisions because they express the product’s intended behavior.
Step 2: Connect the coding agent to Development
Every Zeple project provides a Development environment and a Production environment.
The coding agent should build against Development first. This keeps implementation and validation separate from the backend used by the released application.
The initial agent task should establish:
- the Zeple project configuration;
- the Development environment endpoint;
- the client SDK integration;
- a clear location for environment-specific application settings;
- a test that confirms the app can communicate with Development.
Do not begin by giving the agent production credentials or telling it to point unfinished code at Production. The safest workflow gives the agent enough access to implement the feature while reserving the production release decision for the developer.
Development connection checklist
- The app uses Development configuration locally.
- Configuration is not hardcoded across the codebase.
- No AI provider key is included in agent context or source files.
- The Development connection can be tested independently.
- Error states are visible when configuration is missing.
Step 3: Complete accounts and authentication
Authentication is the beginning of most authorization decisions. The application needs a reliable current-user identity before it can determine which records, files, or AI actions that user may access.
Ask the coding agent to implement complete flows rather than isolated screens:
- registration, when the product allows it;
- sign-in and sign-out;
- session restoration after reopening the app;
- expired-session handling;
- protected-route behavior;
- team or organization membership where needed.
A login screen that navigates forward for any email is a prototype. A production-ready flow proves identity and attaches that identity to subsequent backend requests.
Authentication checklist
- Protected content is unavailable before authentication.
- A valid session survives the expected app lifecycle.
- Signing out removes access to protected content.
- Expired or invalid sessions return the user to a safe state.
- Account and organization context are not accepted blindly from client input.
- Authentication failures do not reveal unnecessary account information.
- The flows have been tested in Development.
Step 4: Turn application models into persistent PostgreSQL data
The agent should map the product model to persistent backend data, not simply move mock objects into a larger JSON file.
For each model, define:
- a stable identifier;
- required and optional fields;
- ownership or organization membership;
- creation and update timestamps;
- allowed create, read, update, and delete operations;
- relationships to other models;
- behavior when a related record is removed.
PostgreSQL is a strong foundation because it supports relational constraints, roles, and row-level security policies. PostgreSQL’s documentation explains that row-security policies can restrict which rows are visible or modifiable for particular commands and roles (PostgreSQL row security policies). The exact Zeple security model should be expressed through supported project APIs rather than improvised by the client.
Data checklist
- Models represent the product rather than the current screen layout.
- Required fields are validated.
- Relationships have explicit behavior.
- User, project, and organization boundaries are defined.
- The client cannot select another tenant merely by changing an identifier.
- Create, update, and delete operations have permission rules.
- Empty, loading, failure, and retry states are implemented.
- Test records remain in Development during implementation.
Step 5: Add private file storage
Files combine data, network, and authorization concerns. The database may store file metadata, but the object itself needs a protected storage path.
The coding agent should use Zeple’s authenticated file APIs rather than embedding storage credentials in the app. Upload and download operations should remain connected to the current user and project context.
The product requirements should also specify accepted file types, size expectations, ownership, replacement behavior, and deletion behavior.
File-storage checklist
- Uploads require the expected authenticated user.
- Files are associated with the correct project resource.
- Download access follows product permissions.
- Storage credentials never appear in client code.
- The UI handles progress, interruption, and retry.
- Unsupported files produce a clear error.
- Removing a record has defined file-cleanup behavior.
- Development files are used while testing.
Step 6: Route provider requests through a secure API proxy
If the application calls OpenAI or another AI platform using the developer’s provider account, the provider key must remain on the server.
OpenAI explicitly advises developers not to deploy API keys in browsers or mobile apps and to route requests through a backend server (OpenAI API key safety guidance). A build variable referenced by client code does not provide a secure boundary if its value is included in the distributed application.
With Zeple, the developer stores the provider key server-side. The coding agent connects the feature to Zeple’s authenticated AI proxy. The client expresses what it wants to do without receiving the upstream secret.
API proxy checklist
- No provider key exists in browser or mobile code.
- No provider key is committed to the repository.
- Client requests use the current application identity.
- The product exposes a bounded operation rather than an unrestricted tunnel.
- Errors do not reveal the provider credential.
- Usage behavior is reviewed in Development.
- Production configuration is applied only for the released app.
Step 7: Test authorization, not only authentication
Authentication answers “Who is this?” Authorization answers “May this person do this here?”
A common test verifies that a signed-out user cannot open a protected page. Production testing must go further. Create at least two users and, when relevant, two organizations. Then attempt to cross the intended boundary.
Examples include:
- User A requests User B’s private record.
- A member requests an administrator-only action.
- One organization requests another organization’s file.
- A valid session sends an identifier belonging to a different project.
- A removed member retries a previously permitted operation.
The application should not rely on hidden buttons as authorization. A user can construct a request even when the interface does not show the action.
Authorization checklist
- Every sensitive operation is checked by the backend boundary.
- Ownership comes from trusted identity and project context.
- Cross-user and cross-organization tests fail safely.
- Removed access stops working promptly.
- Error messages do not disclose protected resources.
- Development includes negative tests, not only happy paths.
Step 8: Review the Development environment as a complete app
At this stage, stop reviewing features in isolation. Use the application from beginning to end.
A useful review sequence is:
- Create a new account.
- Start a session and reopen the application.
- Create the main product records.
- Invite or add another user if the product supports teams.
- Upload and retrieve a file.
- Trigger the AI-powered feature.
- Attempt an action without permission.
- Sign out and confirm access is removed.
- Simulate a network or provider failure.
- Verify that no secret appears in client requests or build output.
The coding agent can help create automated tests and correct failures. The developer should still review whether the resulting behavior matches the intended product.
Step 9: Prepare Production deliberately
Production is not merely Development with a different label. It is the backend environment used by the released application and real users.
Before release, review every environment-dependent value and confirm the shipped build points to Production. Do not assume that because one Development flow works, every production decision has been made.
Production checklist
- The developer has approved the release.
- The released application points to Zeple Production.
- Production configuration is not mixed with local settings.
- Authentication callbacks and application identifiers are correct.
- Data and permission assumptions have been reviewed.
- File access follows the intended production policy.
- Provider credentials remain server-side.
- Failure states are understandable to real users.
- Basic production smoke tests are defined.
- There is a plan to observe errors and unexpected usage.
The developer controls when the application crosses this boundary. The coding agent can prepare and verify the integration, but it should not silently redefine the release process.
Step 10: Know what continues after the agent stops
Once the application is released, the coding session may end. Users will continue signing in, storing data, uploading files, and making AI requests.
That runtime distinction is the reason for a managed backend:
| Stage | Coding agent | Zeple |
|---|---|---|
| Product definition | Helps translate requirements into code | Provides known backend capabilities |
| Development | Implements and tests the integration | Serves the Development environment |
| Release preparation | Updates configuration and tests the build | Provides the Production environment |
| Runtime | Not required for each user request | Operates the backend used by the app |
The coding agent helps finish the backend integration. Zeple remains behind the application after it ships.
The final production-readiness checklist
An AI-built application is ready for a serious release when the developer can answer yes to the following:
- The product has defined users, resources, and permissions.
- The coding agent built and tested against Development.
- Authentication establishes a trusted current user.
- Authorization protects user, project, and organization boundaries.
- PostgreSQL data persists outside the client.
- File operations use authenticated backend APIs.
- Provider keys remain server-side.
- AI requests pass through a secure proxy.
- Negative and cross-account cases have been tested.
- The developer reviewed the complete Development experience.
- The released application uses Production.
- Zeple, not the coding agent or client device, operates the backend at runtime.
The purpose of this checklist is not to slow down AI-assisted development. It is to preserve its speed through the part that matters most: turning generated code into a trustworthy product.
The developer defines the product. The coding agent builds and tests it in Development. Zeple operates it in Production.