Last updated: March 2026
I built a full-stack expense tracker with Claude Code in about 10 minutes. Express.js backend, SQLite database, vanilla HTML/CSS/JS frontend. Around 400 lines of code. It worked perfectly on localhost.
Then I spent the next two days trying to get it online.
I deployed the same app on 5 different platforms and timed everything - from signup to a working public URL. Every error, every workaround, every moment where the platform fought against what my AI-generated app needed.
TLDR: Vercel couldn't run it at all (no persistent filesystem for SQLite). Railway worked but usage-based billing made costs unpredictable. Render worked but the free tier sleeps and paid starts at $14/mo with a database. A raw DigitalOcean droplet took 47 minutes of nginx/SSL/systemd setup. InstaPods (full disclosure: mine) deployed in one command for $3/mo. The deploy gap is still the hardest part of vibe coding.
What I Built
I told Claude Code: "Build me a simple expense tracker. Express.js backend, SQLite for storage, vanilla HTML frontend. Users can add expenses with a category, amount, and date. Show a list and a total."
10 minutes later I had:
-
server.js- Express API with CRUD routes -
expenses.db- SQLite database (created on first run) -
public/index.html- Simple form + table UI -
package.json- express and better-sqlite3 as dependencies
Nothing fancy. No auth, no React, no build step. A working app that reads and writes to a file-based database.
This is the kind of app people build every day with Cursor, Claude Code, and Lovable - and the kind that breaks the moment you try to deploy it anywhere serverless.
The Results
| Platform | Worked? | Time to Deploy | Monthly Cost | What Went Wrong |
|---|---|---|---|---|
| Vercel | No | - | - | No persistent filesystem |
| Railway | Yes | ~8 min | $5-15 (usage) | Nothing, but billing unpredictable |
| Render | Yes | ~12 min | $7 + $7/mo | Free tier sleeps, need paid DB |
| DigitalOcean | Yes | ~47 min | ~$6/mo | Manual nginx, SSL, systemd setup |
| InstaPods | Yes | ~2 min | $3/mo | New platform, single region |
Now let me walk through each one.
1. Vercel — "Just Use Vercel"
Every time someone asks "how do I deploy this?" on Reddit, someone replies "just use Vercel." So I tried Vercel first.
What happened:
Vercel wants a framework - Next.js, Nuxt, SvelteKit, or at minimum a static export. My app is a plain Express.js server. Vercel can technically run Node.js using serverless functions, but that means restructuring my server.js into an api/ directory with individual function files.
I did that. Got the API routes working as serverless functions.
Then hit the real problem: SQLite doesn't work on Vercel. Vercel functions are stateless - every invocation gets a fresh filesystem. My SQLite database file gets created, written to, and then deleted when the function cold-starts. Every expense I add disappears within minutes.
The fix? Replace SQLite with Vercel Postgres or Vercel KV. But that means rewriting my database layer, and Vercel Postgres costs $20/mo after the hobby tier.
Result: Abandoned. My 10-minute app would need a full database rewrite to fit Vercel's model. The whole point of vibe coding is "it works" - not "it works after you swap SQLite for a managed Postgres service."
Time spent: ~25 minutes before giving up.
2. Railway — It Actually Works
Railway is a PaaS that runs your app on actual compute. Push code, it builds and deploys. No serverless restrictions.
What happened:
Connected my GitHub repo. Railway detected package.json, ran npm install, started the server. My Express app booted. SQLite worked because Railway gives you a persistent filesystem.
Time to working URL: ~8 minutes (including signup).
The catch: billing.
Railway charges by compute time, memory usage, and egress. My idle expense tracker costs maybe $1-2/mo. But Railway's minimum is $5/mo (Pro plan), and if the app gets any real traffic, costs spike. One person on Reddit reported a $45 bill for a side project that went viral for a day.
You can set spending caps, but you have to remember to do it. And there's no SSH access to debug when things go wrong.
Monthly cost: $5/mo minimum, potentially much more.
Verdict: Works well. Billing model is the only real problem. If you're OK with usage-based pricing, Railway is solid.
3. Render — Works, But Nickel-and-Dimes You
Render is another PaaS, similar to Railway but with a free tier.
What happened:
Connected GitHub, Render detected Node.js, built and deployed. App started. But my SQLite database reset every time Render redeployed - because the free tier uses an ephemeral filesystem.
To persist data, I needed either:
- A Render Disk ($0.25/GB/mo, minimum $2.50) — but this only works on paid instances
- A Render PostgreSQL database ($7/mo after 90-day free trial)
I upgraded to a paid instance ($7/mo) and added a Render Disk. Now SQLite persists. But my $0/mo "free tier" side project just became $7/mo, and that's before adding a real database.
Time to working URL: ~12 minutes (free tier took 5 min, then 7 more to figure out persistence and upgrade).
Other friction:
- Free tier instances sleep after 15 minutes of inactivity. First request after sleeping takes 30-50 seconds to cold-start.
- Logs are limited. When my app crashed during one test, the error was truncated.
- No SSH on the free tier.
Monthly cost: $7/mo minimum for persistent storage. $14/mo if you need a proper database.
Verdict: Good platform, but the free tier is misleading for anything with a database. You'll upgrade quickly.
4. DigitalOcean Droplet — Full Control, Full Responsibility
The classic approach. Rent a $6/mo VPS and set everything up yourself.
What happened:
Created a $6/mo droplet (1 vCPU, 1 GB RAM, 25 GB SSD). SSH'd in. Then spent the next 40 minutes:
-
apt update && apt install nodejs npm nginx certbot— 3 min - Uploaded my code via
scp— 1 min -
npm install— 1 min - Created a systemd service file so the app starts on boot — 5 min (had to Google the syntax)
- Configured nginx as a reverse proxy — 8 min (always forget the
proxy_passformat) - Set up a domain and DNS A record — 5 min (waiting for propagation)
- Ran certbot for SSL — 3 min
- Configured UFW firewall — 3 min
- Debugged why nginx was returning 502 — 10 min (forgot to open port 3000 internally)
- Tested everything — 2 min
Time to working URL: ~47 minutes.
My app runs great now. Full SSH access, real filesystem, SQLite works perfectly. I can install anything, run a database, store files, no limitations.
The trade-off: I'm now responsible for everything. OS updates, security patches, SSL certificate renewals, monitoring, backups. If the app goes down at 2 AM, that's my problem.
Monthly cost: $6/mo (just the droplet).
Verdict: Best value if you know Linux. Worst experience if you just want to ship something fast. 47 minutes of DevOps for an app I built in 10 minutes with AI.
5. InstaPods — One Command
Full disclosure: I built InstaPods. I'm including it because the comparison is useful and I'll be honest about the gaps.
What happened:
$ cd expense-tracker
$ instapods deploy
Deploying expense-tracker
Detected nodejs (package.json)
Creating pod ·················· done 1.2s
42 files uploaded ············· done 0.8s
Reloading ····················· done 1.4s
4 deps installed · service active · HTTP 200
Deployed in 3.4s
https://expense-tracker.instapods.app
The CLI detected Node.js from package.json, created a pod, uploaded code, installed dependencies, started the app. SQLite works because it's a real Linux server with a persistent filesystem.
Time to working URL: ~2 minutes (including CLI install).
Monthly cost: $3/mo (Launch plan).
The honest gaps:
- New platform. Launched in 2026, smaller community than Railway or Render
- Single region right now (EU - Nuremberg). Add ~120ms latency from US East, ~250ms from Asia
- No built-in metrics dashboard or log streaming (SSH in and check manually)
Risk reducers: $10 free credit on signup (no credit card required). Flat $3/mo - no usage spikes. SSH access on every plan, so you're never locked in.
Verdict: Fastest deploy by far. Cheapest managed option. But you're betting on a newer platform.
What I Actually Learned
1. Serverless platforms can't handle vibe-coded apps. AI tools generate full-stack apps with persistent storage, not static sites. Vercel and Netlify are the default recommendations on Reddit, but they break the moment your app needs to write to disk. SQLite, file uploads, background jobs - none of it works on serverless.
2. "Free tier" disappears the moment you need a database. Render's free tier, Vercel's hobby plan, Railway's trial - they work for static demos. The moment your app needs persistent data (which is almost always with AI-generated apps), you're paying $7-20/mo.
3. Raw VPS setup takes 4x longer than building the app. DigitalOcean works perfectly - if you're willing to spend 47 minutes on nginx, SSL, systemd, and firewall setup for an app you built in 10 minutes. For someone who just vibe-coded their first app, it's a wall.
4. The deploy gap is now the hardest part of building with AI. My expense tracker took 10 minutes to build and anywhere from "impossible" (Vercel) to 47 minutes (DigitalOcean) to deploy. AI closed the build gap. The deploy gap is still wide open.
The Comparison, One More Time
| Vercel | Railway | Render | DigitalOcean | InstaPods | |
|---|---|---|---|---|---|
| Works for full-stack? | No | Yes | Yes (paid) | Yes | Yes |
| SQLite works? | No | Yes | Paid only | Yes | Yes |
| SSH access? | No | No | Paid only | Yes | Yes |
| Setup time | Failed | ~8 min | ~12 min | ~47 min | ~2 min |
| Monthly cost | - | $5-15 | $7-14 | ~$6 | $3 |
| You manage | - | Nothing | Nothing | Everything | Nothing |
| Billing model | - | Usage | Tier + usage | Flat | Flat |
Who Should Use What
If your app is frontend-only (static HTML/CSS/JS, no backend):
Vercel or Netlify. They're free and they're great at what they do.
If you want a mature PaaS and don't mind usage-based billing:
Railway. Best developer experience of the PaaS options. Solid team, good docs, active community.
If you want full control and know Linux:
A Hetzner or DigitalOcean VPS at $4-6/mo. You'll spend time on setup, but you own every layer.
If you want the fastest path from "works on localhost" to "works on the internet":
InstaPods. One command, $3/mo, real server. I built it specifically for this use case.
FAQ
Can I deploy a full-stack AI-generated app to Vercel?
Only if you rewrite the backend for serverless. Vercel runs Node.js as stateless functions - no persistent filesystem, no SQLite, no long-running processes. If your AI tool generated a standard Express/Flask/Django app, Vercel won't work without restructuring.
What's the cheapest way to deploy a vibe-coded app?
For managed hosting: InstaPods at $3/mo or Railway at $5/mo minimum. For DIY: a Hetzner VPS at ~$3.50/mo, but you'll spend 30-60 minutes on setup. For static-only apps: Vercel and Netlify are free.
Do AI-generated apps need special hosting?
No, but they need hosting that supports whatever the AI generated. Most AI coding tools produce full-stack apps with backends and file-based databases (SQLite). That rules out serverless platforms. You need a host with a persistent filesystem and the ability to run a long-lived process.
Can Claude Code or Cursor deploy directly?
Yes, through MCP (Model Context Protocol). InstaPods has an MCP server that lets AI coding tools create pods, push code, and manage apps directly from the conversation. No terminal needed.
For more comparisons, I wrote about the cheapest way to self-host n8n, Coolify vs Cloudron vs CapRover, and a 6-platform comparison for self-hosted apps.
AI tools closed the build gap. The deploy gap is still wide open. Until it catches up, "how do I get this online?" will keep being the hardest part of vibe coding.
What's your deploy workflow for AI-generated apps? I'm curious what other people are running. Drop it in the comments.
Top comments (0)