23-Point Checklist for Vibe-Coding Apps Before the First Payment
23-Point Checklist for Vibe-Coding Apps Before the First Payment
Before accepting the first payment, use an AI agent to audit design, security, payments, data handling, and post-launch operations.
Before your vibe-coding app accepts its first payment, ask an AI agent to check these 23 points:
- A single design-system document exists, and all colors, font sizes, and spacing match it.
- Separate screens are provided for each state: loading, empty, and error.
- Private keys are stored only on the server. Frontend files and Git history are checked for leaks, and every key ever exposed is rotated.
- Every API endpoint verifies authorization and access rights on the server. Row Level Security (RLS) is enabled in the database.
- Usage-based services such as AI, SMS, and email have spending limits or alerts configured.
- Payment webhooks verify signatures, and repeated notifications for the same payment do not cause duplicate accounting.
- Refunds, cancellations, and failed charges are tested in test mode. Each scenario runs once and ends with the correct status.
- Access is revoked on time after a trial or subscription ends.
- When switching from test to production payments, production API keys and the webhook signing secret are reconfigured.
- Monetary amounts are stored as integers in the smallest currency unit, as in Stripe. Do not use floating-point numbers: in JavaScript,
0.1 + 0.2is not0.3. - Double-clicking the submit button creates only one order.
- Sales tax or VAT is configured for the countries where the product is sold.
- Terms of use and privacy policy match how the app actually works.
- Daily automatic backups are configured. The free Supabase tier does not include them, so upgrade to Pro or set up your own dumps. Restore into a new database at least once.
- Every database schema migration has rollback SQL prepared. Migration and rollback are tested on a copy of production data.
- Lists with more than 1,000 records are not silently truncated. By default, the Supabase API returns up to 1,000 rows.
- Time is stored as
timestamptz, and each user's timezone is recorded in a separate column so reminders arrive in local time. - Soft delete is used first, and RLS hides deleted records. When an account is deleted, the user's data is removed permanently.
- Users can export their own data.
- Names with apostrophes, emoji, or right-to-left text do not break input fields.
- Images use WebP or AVIF formats, and content below the fold loads as the user scrolls.
- Indexes are created for fields that are filtered most often. With dozens of test records everything may look fast, but real data volumes reveal slowdowns.
- Error monitoring is connected so you learn about issues before your users do.
Send the full list to your agent and add this prompt at the end. The agent should check each item and present results in a table:
Distribute the check among five subagents by the following areas:
Design and performance. Security. Payments. Data. Post-launch operation.Check all items without changing anything. For each item, indicate whether it passed or failed, and name the file where the problem was found.
If something can only be checked through a service dashboard, mark the item as «Requires my confirmation» and provide step-by-step instructions for manual verification.
Test backup and restore only on a test database, and payments only in test mode. Do not modify production data.
First show me the results table, and do not fix anything until I confirm.
Why it matters
AnalysisIt helps prevent data loss, double charges, key leaks, and legal risks before the app starts processing real money.
Discuss in community
Share your questions and insights with developers
Related in Ecosystem
Practical guides, core terminology, and agent skills
How to Integrate Monobank Acquiring Without a Developer via Vibe-Coding
A step-by-step guide to integrating Monobank online payments: FOP compliance, terminal setup, ECDSA webhook verification, robust UX, and security test matrix.
Vibe Coding for Non-Developers: How Marketers, Designers, and PMs Build Products with Claude and Cursor
A practical guide to Vibe Coding without the terminal: 45 techniques for working in Claude and Cursor tailored for marketers, designers, and PMs. From website edits to routine automation.
AI coding joke: Claude says three months, developer gives three hours
A short joke highlights the gap between AI-assisted project estimates and real developer deadlines.
OpenAI launches retro console for vibe coders
OpenAI has released ModRetro Chromatic Codex Edition, a $200 Game Boy-compatible console with a rewritable cartridge and a Codex plugin for building games.