Vibe Coder Deployment Playbook
You built the thing. Now get it live. This is the exact guide to deploy your Bolt or Cursor project to production — without burning a week on config hell.
Pick Your Platform First
Most vibe coders go straight to Vercel because someone mentioned it once. That works — sometimes. Picking the wrong platform for your project type is the #1 reason deployments fail before they start.
| Platform | Best For | Cold Starts | DB Support |
|---|---|---|---|
| Vercel | Next.js, React, Bolt/Lovable projects | Yes (Serverless) | Via integrations |
| Railway | Full-stack, Node/Express backends, Cursor projects | No | Built-in Postgres |
| Netlify | Static sites, Gatsby, plain React | Yes (Functions) | Via plugins |
| Render | Long-running servers, background jobs | Yes (free tier) | Built-in Postgres |
The simple rule:
Built with Bolt or Lovable? → Vercel
Backend-heavy with a real server (Express, FastAPI)? → Railway
Static site or marketing page? → Netlify
Unlock Playbook
The full deployment guide, including step-by-step Vercel/Railway configs and env var best practices, is reserved for our community of builders.
Free forever • Join 1,200+ vibe coders
Deploying a Bolt Project to Vercel
Most common path. Most Bolt projects generate a React or Next.js frontend.
Get your code into GitHub
In Bolt, click Export → Download ZIP or connect GitHub directly. If you downloaded a ZIP:
Terminal
cd your-project-folder git init git add . git commit -m "initial commit" git remote add origin https://github.com/you/project.git git push -u origin main
Connect to Vercel
- Go to vercel.com → Sign up with GitHub
- Click Add New → Project
- Select your repo from the list
- Vercel auto-detects the framework
Verify build settings
| Setting | Correct Value |
|---|---|
| Build Command | npm run build |
| Output Directory | dist (Vite) or .next (Next.js) |
| Install Command | npm install |
Add environment variables before deploying
Go to Settings → Environment Variables and add every key from your .env file. See the full env vars guide below.
Deploy
Click Deploy. Watch the build logs in real time. If it fails, the error will be in the logs — don't guess, read them. When it passes: live URL in under 2 minutes.
Unlock Technical Blueprints
The exact configurations for Cursor + Railway deployments are reserved for our community members.
Free forever • Join 1,200+ vibe coders
Deploying a Cursor Project to Railway
Cursor projects often have a real backend — Express, FastAPI, database connections. Vercel's serverless model fights against this. Railway is the right call.
Push to GitHub (same as above)
Same drill. Get it into a GitHub repo.
Create a Railway project
- Go to railway.app → Sign up with GitHub
- Click New Project → Deploy from GitHub Repo
- Select your repo
- Railway detects your stack automatically
Add a database (if needed)
In your project dashboard, click + New → Database → Postgres. Railway auto-injects DATABASE_URL into your environment — no manual copying needed.
Set your start command
Go to Settings → Deploy and set your start command:
Terminal
# Node.js npm start # Python (FastAPI) uvicorn main:app --host 0.0.0.0 --port $PORT
process.env.PORT. Hardcoding port 3000 will break it.Add environment variables + deploy
Add vars in the Variables tab using the Raw Editor. Railway auto-deploys on every git push.
Environment Variables — The #1 Gotcha
More deployments fail because of env vars than any other reason.
What they look like
File: .env.local
OPENAI_API_KEY=sk-proj-... DATABASE_URL=postgresql://... STRIPE_SECRET_KEY=sk_live_... NEXT_PUBLIC_API_URL=https://yourapi.com
In Next.js, any var accessible in the browser must start with NEXT_PUBLIC_. Without it, it's undefined on the client.
Copy-pasting from Hint or chat often adds invisible trailing spaces. Your API call gets a space at the end and fails with 401. Always double-check.
.env.local is gitignored. If you added vars there and forgot to add them to Vercel/Railway, they don't exist in production.
Adding environment variables to Vercel does NOT trigger a redeploy. Manually trigger one: Deployments → Redeploy.
Common Build Errors + Exact Fixes
Module not found
Module not found: Error: Can't resolve './components/Header'
Fix: File wasn't pushed to GitHub (gitignore or case sensitivity). Mac filesystems are case-insensitive; Linux (Vercel's build server) is not. Header.jsx ≠ header.jsx in production.
Terminal
git status git add . git commit -m "fix: add missing files" git push
Output directory missing
Error: No output directory named "dist" found after the build
Fix: Your build script isn't generating the expected folder. Check package.json → build script. Confirm it runs locally.
Terminal
npm run build ls dist/ # Should have index.html and assets
File not found on build server
ENOENT: no such file or directory during build
Fix: Code references a hardcoded absolute path (/Users/yourname/...) that doesn't exist on the server. Replace with relative paths. Also check .gitignore.
Build timeout
Build times out / npm install hangs
Fix: Heavy optional dependency or expensive postinstall script. Add a .npmrc to skip optional deps.
Terminal
# .npmrc omit=optional
Pre-Launch Checklist
Five minutes here saves five hours debugging in production.
Run the build locally first
If it fails locally, fix it before touching deployment.
Terminal
npm run build npm run preview
Check every .env variable is added to your platform
Open your .env file. Open your Vercel/Railway variables panel. One missing key = silent failure.
Confirm output directory matches platform settings
Check what npm run build creates (dist, .next, build, out) and make sure that's what you've told the platform to look for.
Verify your server listens on process.env.PORT
For Railway and Render, the platform assigns a port. Hardcoding 3000 will break it.
Test with a fresh incognito window after deploy
Your browser has cached data from local dev. Incognito is what new users actually see.