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.
Claude Code Found Hidden Cryptominer During Vibe Coding
While developing a temperature-monitoring app on a Mac, Claude Code noticed suspiciously high temperatures and detected an XMRig cryptominer using about 1175% CPU.
AI Agents (Autonomous Agents)
Software systems based on LLMs that can autonomously perceive the state of the environment, decompose complex goals, invoke external tools, and iteratively correct their own mistakes.
Tab Blind Acceptance (Tab Fatigue)
A psychological trap for modern developers where gray autocomplete suggestions from Copilot or Cursor are accepted by pressing the Tab key without careful reading and analysis. This leads to a loss of control over one's codebase and the emergence of hidden bugs.
Chinese Hacker Used AI Agents to Attack More Than 1,200 Websites
Researchers found that a lone hacker used AI agents and the open-source Cairn framework to attempt attacks on more than 1,200 websites and compromise resources tied to over 100 companies.