DEV Community

niuniu
niuniu

Posted on

I Moved My Side Projects Off Railway and AWS to 100% Free Tiers — 90-Day Bill: $0

Last year I was paying for Railway ($5-20/month, always creeping up), a $6 VPS for cron jobs and bots, and AWS for a Postgres that mostly sat idle. Total damage: ~$40/month, $480/year, for side projects that made $0.

So I moved everything to free tiers and ran it for 90 days. Here's the bill, the breakage, and what I'd never move.

The replacement map

Was paying For Moved to Real limit
Railway $15/mo 3 small Python APIs Cloudflare Workers (100k req/day) 10ms CPU per request — killed my image-resize endpoint
AWS RDS $25/mo Postgres Neon free tier 0.5GB storage, scales to zero, 190 branches
VPS $6/mo cron + a Discord bot Cloudflare Cron Triggers + Supabase Edge Functions Cron: fine. Long-running bot: had to rethink it
Netlify Pro $19/mo 2 static sites Cloudflare Pages Unlimited bandwidth — actually unlimited, unlike the "100GB" elsewhere

The Neon setup that replaced my $25 RDS bill

# Serverless driver — works over HTTP/WebSocket, no persistent connection
# pip install psycopg[binary] or use @neondatabase/serverless for Node
import psycopg
conn = psycopg.connect(os.environ["DATABASE_URL"])  # neon.tech connection string
cur = conn.execute("SELECT count(*) FROM events")
Enter fullscreen mode Exit fullscreen mode

The killer feature nobody talks about: database branching. I spin up a branch per PR, run migrations against it, and delete it. On RDS that would've meant a second instance at $25/month.

The honest catch: cold starts. Scale-to-zero means the first query after idle takes ~1-2 seconds. For a dashboard, fine. For a latency-sensitive API, I added a 5-minute keep-alive ping from a Cloudflare Cron Trigger — hacky, but free.

What broke

  • Railway → Workers: Workers has no persistent filesystem and a 10ms CPU limit on free. Anything with PIL, pandas, or ffmpeg dies. One of my three APIs went back to... a $0 Oracle Cloud free tier VM instead (4 ARM cores, 24GB RAM, genuinely free — the best-kept secret in this list).
  • The Discord bot: needs a persistent WebSocket connection. Cron triggers can't do that. It lives on the Oracle VM now too.

The 90-day bill

$0.00. Railway sent me a "we miss you" email. AWS sent nothing because I deleted the account resources properly (check your free-tier expirations — that's how they get you).

Unpopular opinion: Railway's DX is better than every free tier here combined, and it's still not worth $180/year for a hobby project. If your project makes $0, your infrastructure should cost $0.

Full stack list with the exact limits for each service (I keep it updated as free tiers get nerfed — looking at you, Heroku and PlanetScale): https://ly.cyberserval.tech/iIETXiF

What's the most surprising thing you've gotten away with hosting for free? And has anyone actually hit Cloudflare Workers' 100k requests/day limit on a personal project?

Top comments (0)