The vibe coder's
deployment checklist.
10 rules before you go live.
You built it with AI. It works on localhost. You are ready to ship. Before you point a domain at it and tell people about it — read this. Security holes, race conditions, privacy laws, stolen images, payment handling nightmares. The things the AI will not warn you about unless you ask. And one truth that nobody tells you: when something goes wrong, it is still your name on it.
I build with AI. Forge Vertical runs on systems I directed Claude, Gemini, and GPT to build. I have shipped production software, processed real payments, handled real user data, and been responsible for real security. I am not writing this to gatekeep vibe coding — I am writing it because I have made some of these mistakes, caught others before they became problems, and watched third-party vibe-coded projects fail in ways that were entirely avoidable.
The AI will build what you ask it to build. It will not automatically include what you did not know to ask for. That gap — between what got built and what a production system actually needs — is what this article is about.
Before you open any AI tool: write down what the product does in one paragraph. Write down who uses it. Write down what data it stores. Write down what happens when a user's action fails. Write down what countries it operates in. If you cannot answer those questions, you are not ready to build yet.
Research the market. Research the laws. Research what competitors have built and what they got wrong. The AI cannot research your specific competitive landscape for you. The thinking that happens before the first prompt is where good products start.
Every prompt involving user input, authentication, data storage, or external API calls should explicitly request security considerations. Add this to your system prompt or context when starting any project:
Point your domain's nameservers to Cloudflare when you buy the domain. Do not skip this step. Then in the Cloudflare dashboard, enable these settings specifically:
Here is a simpler one you might not think about: a user clicks a payment button twice because the page was slow to respond. Two payment requests hit your backend simultaneously. Both charge the card. You have charged your customer twice and now need to refund one — assuming you catch it.
Race conditions are extremely common in vibe-coded projects because the AI will often generate the happy path — "user clicks button, thing happens" — without automatically handling concurrent requests. The fix requires specific patterns: database-level locking, atomic operations, idempotency keys on payment requests, and UI-level button disabling after the first click.
The practical rule: Never store card numbers yourself. Ever. Use Stripe, PayFast, Yoco, or another PCI-compliant payment processor and let them handle the card data. Your code should never touch the raw card number — only tokens and payment intents provided by the processor.
If you are building anything beyond simple one-off payments — subscriptions, marketplaces, split payments, escrow — seriously consider partnering with a developer who has done it before, or taking a course specifically on payment systems before you direct the AI to build it. The AI will build what you describe. If you do not understand what needs to be described, the gaps will cost you.
At minimum, before you launch, you need: a Privacy Policy that accurately describes what data you collect and why, a Cookie Consent mechanism if you use tracking or analytics cookies, a Terms of Service, and a Data Retention policy. These are not optional box-ticking exercises — they are legal requirements in most jurisdictions that expose you to real fines if ignored.
Cookie consent specifically: If your site uses Google Analytics, Facebook Pixel, or any third-party tracking script, you need a cookie banner that allows users to accept or reject non-essential cookies before those scripts fire. Most vibe-coded sites have analytics loaded in the `<head>` unconditionally. That is a GDPR violation for any EU visitor.
Double-check the plumbing means: Go through every form on your site and submit garbage data — what happens? Go through every authenticated endpoint and try accessing it without being logged in — what happens? Go through every email your system sends and verify it actually arrives with the right content. Go through every error state and confirm it shows something useful rather than a raw stack trace. Check that environment variables and API keys are not exposed in client-side code. Check that your database is not publicly accessible.
Ask the AI to audit itself. Seriously. "Review this codebase and flag any security vulnerabilities, exposed credentials, missing authentication checks, or unhandled error states." The AI that built it can also review it — and it will find things you missed.
The safe sources:
Pexels (pexels.com) — completely free for commercial use, no attribution required. High quality. Enormous library. Use this first.
Pixabay (pixabay.com) — same model as Pexels. Free for commercial use, no attribution.
Unsplash (unsplash.com) — free for commercial use, attribution appreciated but not required.
AI-generated images — ask the AI to generate a completely original image for your specific need. No copyright issues because it is a new creation. For South African and African imagery specifically, this is often the best option since stock libraries are thin on local content.
For video: Pexels also has free stock video. Pixabay does too. For anything more specific, Mixkit (mixkit.co) offers free commercial video footage.
Even if you are building a web app rather than a mobile app, run your project through their mental checklist. Ask yourself honestly: Does this app crash or behave unexpectedly in any flow I have tested? Does it have a privacy policy that accurately describes what it collects? Does it have terms of service? Does it do what it says it does? Does it handle errors gracefully or just crash? If the answer to any of those is no — fix it before you launch, not after.
Google's Play Store policies are publicly available and more detailed than most compliance checklists you will find elsewhere. Reading the Play Store Developer Content Policy is genuinely useful even for web-only projects.
Basic pen testing you can do yourself: Try submitting forms with script tags in text fields (`<script>alert('xss')</script>`). Try accessing `/admin` without being logged in. Try changing a URL parameter from your user ID to someone else's. Try uploading a file with a `.php` or `.exe` extension where the form expects an image. Try submitting a payment form twice in rapid succession. Try making an API request without the authentication token.
Free automated scanning: Run your live URL through Mozilla Observatory (free, checks HTTP headers and security config). Use SSL Labs to verify your HTTPS configuration. Use securityheaders.com to check your response headers.
AI-assisted pen testing: For deeper security analysis, Claude (with Anthropic CVP approval for security research contexts) can assist with identifying vulnerability patterns, reviewing authentication logic, and generating test cases for common attack vectors. Describe your architecture and ask it to identify the most likely attack surfaces. It will flag things you did not think to test.
Test the features, not just the happy path. What happens when a user enters 10,000 characters into a text field? What happens when they submit the form with JavaScript disabled? What happens when their session expires mid-flow? What happens when the external API your app depends on returns an error? These are the edge cases that produce support tickets, data corruption, and security vulnerabilities.
- Requirements documented before first prompt — what, who, what data, what countries
- Security explicitly prompted — input validation, parameterised queries, rate limiting
- Cloudflare set up — SSL Full Strict, Bot Fight Mode, WAF, Rate Limiting, HSTS
- Race conditions tested — concurrent requests on all state-modifying endpoints
- Payment handling uses PCI-compliant processor — no card data stored
- Privacy policy, cookie consent, and terms of service — live before launch
- No credentials in code — .env file, .gitignore confirmed, no secrets on GitHub
- All images and video are royalty-free — Pexels, Pixabay, Unsplash, or AI-generated
- Mozilla Observatory score B or above — security headers verified
- Every feature tested as an adversary — broken flows, bad input, concurrent actions
Shipping is the goal. Getting to shipped is the process. None of these rules exist to slow you down — they exist because the problems they prevent are much slower to fix after launch than before it. A security breach, a copyright claim, a payment dispute, a regulatory fine — any one of these costs more time, money, and reputation than the checklist above.
Build the thing. Check the list. Ship it. Then build the next one better because you already know this stuff.