Pick a Host and Deploy
For most vibe-coded apps, you do not need a server you babysit. Modern platforms take your code and give you a live in minutes. The common choices:
- Static sites and frontends: Cloudflare Pages, Vercel, Netlify, GitHub Pages.
- Full-stack apps and APIs (Application Programming Interfaces, the doorways one program uses to talk to another): Cloudflare Workers, Vercel, Render, Fly.io, Railway.
- Heavier backends: a platform or a small VPS (Virtual Private Server, your own rented slice of an always-on computer in a data center).
The right move is to tell the AI what you built and let it recommend. Try: "This is a Next.js app with a Postgres . I want the cheapest reliable host with a generous free tier. Give me the steps and a config file." Be specific about the things that actually constrain the choice: your , whether you have a database, whether you need background jobs or file uploads, and your budget. A static marketing page and a full-stack app with a have very different homes.
Once you have picked one, deploying is usually a couple of commands:
# Example: Cloudflare Workers via Wrangler
npm install -g wrangler
wrangler login
wrangler deploy
# Example: Vercel
npm install -g vercel
vercel --prod
Let the AI generate the platform config (wrangler.toml, vercel.json, etc.) and explain any errors the first deploy throws. First deploys almost always throw something — a missing build command, a wrong output directory, a Node version mismatch, an (a named setting handed to your app from outside the code, like a key under the doormat the app knows to look for) the build needs but cannot find. None of these mean you did something stupid; they mean the platform needs to be told one more thing. Paste the error back verbatim and ask for the fix, and ask why it happened so the next one surprises you less. Two or three rounds and you are live on a temporary URL. Open that URL and click through the core flow before you celebrate — "the deploy succeeded" and "the app works" are not the same claim.
Every deploy walks the same pipeline. The preview step is your safety net: it gives every change its own URL to click before it can ever touch real users.
YOUR MACHINE THE PLATFORM
┌──────────────┐
│ write code │
│ git commit │
│ git push │
└──────┬───────┘
│ push
▼
┌──────────────┐ fail ┌──────────────────┐
│ BUILD ├─────────▶│ read error, │
│ install deps │ │ fix, push again │
│ compile │◀─────────┤ (2–3 rounds) │
└──────┬───────┘ retry └──────────────────┘
│ pass
▼
┌──────────────┐
│ PREVIEW │ temporary URL — click the core flow here
│ *.pages.dev │ ── share · test · verify ──┐
└──────┬───────┘ │
│ looks good? ──── no ──────────────┘
│ yes
▼
┌──────────────┐
│ PRODUCTION │ your real domain · real users
└──────────────┘