Side project hosting options comparison
Article

Best Hosting for Side Project: Complete 2026 Guide with Real Costs and Deploy Times

What Makes Hosting "Best" for Side Projects (Not What You Think)

After shipping 30+ side projects over 12 years—from static marketing sites to full-stack SaaS apps serving 10K+ users—I've learned that "best hosting" means the one you stop thinking about after the first deploy. Not the cheapest. Not the most features. The one with the lowest friction between idea and live URL.

The pattern I've seen repeatedly: developers spend 40 hours comparing hosting providers, then pick something complex, then abandon the project after three weekends of fighting deployment issues. The winning side projects used boring, reliable hosting that worked on the first try.

Your constraints for side project hosting:

  • Cost: $0-30/month until you have paying users (spending more is premature optimization)
  • Deploy time: git push to live site in under 5 minutes, not 50
  • Maintenance: zero hours most weeks; checking logs shouldn't require SSH
  • Reliability: 99%+ uptime without manual intervention (one 3am page kills momentum)

This guide gives you the decision framework I use when starting side projects, with actual provider names, real pricing, and deployment complexity ratings based on production experience.

Quick Answer: Best Hosting by Project Type (Start Here)

Don't want to read 5,000 words? Here's what I actually use and recommend:

  • Static site (portfolio, docs, landing page): Cloudflare Pages or Netlify — free tier, 2-minute setup, global CDN
  • Full-stack app (Next.js, Nuxt, Django): Vercel (frontend), Railway or Render (backend) — $0-20/month, git-based deploys
  • API only (REST, GraphQL): Railway or Fly.io — $5-10/month, Docker support, simple scaling
  • Background jobs (cron, workers, scrapers): DigitalOcean Droplet or Hetzner VPS — $4-6/month, full control
  • Database: Neon (Postgres), PlanetScale (MySQL), or Supabase — free tiers with auto-backups

Why these specifically? They all offer: (1) working free tiers or sub-$10 paid plans, (2) deploy from Git in under 5 minutes, (3) automatic SSL, (4) decent documentation, (5) no surprise bills. I've used each in production for 6+ months.

Keep reading for the decision framework, cost breakdowns, and when to choose differently.

How to Pick Hosting in 6 Steps (15-Minute Decision Framework)

Use this exact process to choose hosting without overthinking:

Step 1: Classify Your Project's Architecture

Static site: HTML/CSS/JS files only, built by a static site generator (Astro, Hugo, Jekyll, Gatsby). No server-side logic. Examples: portfolio, blog, documentation, marketing page.

Frontend + API: JavaScript framework (React, Vue, Next, Nuxt) with a separate backend API. Examples: SaaS MVP, web app, admin dashboard.

API only: Backend service with no UI. Examples: webhook receiver, REST API, bot backend, automation service.

Background jobs: Long-running processes, cron jobs, queue workers. Examples: scraper, price tracker, email sender, data processor.

Realtime: WebSocket connections, persistent connections. Examples: chat, multiplayer game, live dashboard, collaboration tool.

Step 2: Estimate Your Traffic Honestly

Be realistic: 90% of side projects have fewer than 100 daily active users in the first 6 months. If you're pre-launch or MVP stage, assume:

  • 10-50 visitors per day
  • 100-500 page views per day
  • 5-20 concurrent users maximum
  • Negligible bandwidth (<1GB/day)

Why this matters: optimizing for 10K concurrent users when you have 10 daily users wastes time and money. Start small, scale later.

Step 3: Decide Your Ops Tolerance

Zero ops (PaaS/serverless): You want to write code, push to Git, and forget about infrastructure. You're okay paying 20-50% more for convenience. Platform handles SSL, monitoring, scaling, backups.

Some ops (VPS): You're comfortable with Docker, basic Linux, and occasional server maintenance. You want full control and lower costs. You'll handle updates, monitoring, backups yourself.

For side projects, default to zero ops. Your bottleneck is shipping features, not hosting costs. Exception: if you need background jobs, VPS is often simpler.

Step 4: Separate App and Database (Critical Decision)

Wrong approach: host database on the same server as your app to save $5/month.

Right approach: use a managed database service. Here's why:

  • Automatic backups: your data survives when (not if) you mess up
  • Easy migration: switch app hosting without touching your database
  • Better reliability: managed DB providers have 99.9%+ uptime
  • Free tiers exist: Neon, Supabase, PlanetScale offer free Postgres/MySQL with auto-backups

Exception: if you're using SQLite or a file-based database, you can host it with your app. But add automated backups to S3/B2.

Step 5: Match Your Project Type to Hosting Category

  • Static site: Use static hosting (Cloudflare Pages, Netlify, Vercel, GitHub Pages)
  • Full-stack app: Use PaaS (Railway, Render, Fly.io, Vercel for Next.js)
  • API only: Use PaaS with Docker support (Railway, Render, Fly.io) or serverless (AWS Lambda, Cloudflare Workers)
  • Background jobs: Use VPS (DigitalOcean, Hetzner, Linode) with Docker
  • Realtime: Use PaaS with WebSocket support (Fly.io, Render) or VPS

Step 6: Verify These Requirements Before Committing

  • Free tier or trial: never pay before testing deploy experience
  • Git-based deploys: push to main branch = live site (not FTP or manual uploads)
  • Automatic SSL: HTTPS enabled by default, auto-renewal
  • Environment variables: secure secrets management built-in
  • Logs accessible: view logs without SSH or special tools
  • Reasonable free tier limits: no "sleeps after 30 minutes" that breaks your demo

Best Hosting Options by Project Type (With Real Pricing)

Static Sites: Cloudflare Pages vs Netlify vs Vercel vs GitHub Pages

When to use: Your site is pre-built HTML/CSS/JS (Astro, Hugo, Jekyll, Eleventy, static Next.js export). No server-side rendering or API routes.

Cloudflare Pages

  • Free tier: unlimited bandwidth, unlimited sites, 500 builds/month
  • Deploy time: 2-5 minutes from git push
  • Best for: high-traffic sites (free unlimited bandwidth), global performance
  • Gotcha: build time limited to 20 minutes on free tier

Netlify

  • Free tier: 100GB bandwidth/month, unlimited sites
  • Deploy time: 2-4 minutes
  • Best for: preview deploys for every PR, form handling, serverless functions
  • Gotcha: bandwidth charges hit fast if you get traffic spike ($55/100GB overage)

Vercel

  • Free tier: 100GB bandwidth/month, unlimited sites
  • Deploy time: 1-3 minutes (fastest)
  • Best for: Next.js (made by Vercel), automatic preview URLs
  • Gotcha: commercial use requires Pro plan ($20/user/month)

GitHub Pages

  • Free tier: 100GB bandwidth/month, public repos only (or GitHub Pro)
  • Deploy time: 3-8 minutes
  • Best for: simplest setup if your code is already on GitHub
  • Gotcha: no preview deploys, limited build environment, Jekyll-focused

My recommendation: Cloudflare Pages for most use cases. Netlify if you need serverless functions. Vercel only if you're using Next.js.

Full-Stack Apps: Railway vs Render vs Fly.io vs Heroku

When to use: Your app has a backend (Node.js, Python, Ruby, Go) that needs to run 24/7. You need server-side rendering, API routes, or database access.

Railway

  • Free tier: $5 credit/month (500 hours of small instance), no credit card required
  • Paid: pay-as-you-go, ~$5/month for 1GB RAM app + Postgres
  • Deploy time: 2-4 minutes, supports Dockerfile or buildpacks
  • Best for: simplest deploy experience, built-in Postgres/Redis/MySQL
  • My experience: used for 6 side projects, never had deployment issues, logs are excellent

Render

  • Free tier: web services sleep after 15 min inactivity (cold start = 30-60 seconds)
  • Paid: $7/month for always-on instance, $15/month for Postgres
  • Deploy time: 3-6 minutes
  • Best for: background workers (free tier stays awake), Docker support
  • Gotcha: free tier cold starts make it unusable for user-facing apps

Fly.io

  • Free tier: 3 shared-cpu VMs, 160GB bandwidth
  • Paid: $1.94/month per 256MB VM
  • Deploy time: 4-7 minutes, Dockerfile required
  • Best for: global deployment (run in multiple regions), WebSocket apps
  • Gotcha: requires understanding Docker, more complex than Railway/Render

Heroku

  • Free tier: eliminated November 2022
  • Paid: $7/month for Eco dyno (sleeps), $25/month for Basic (always on)
  • Verdict: skip it. Railway and Render are cheaper with better DX

My recommendation: Railway for most full-stack side projects. Fly.io if you need WebSockets or multi-region. Skip Render's free tier unless you're okay with cold starts.

VPS Hosting: DigitalOcean vs Hetzner vs Linode vs Vultr

When to use: You need background jobs, cron tasks, or want maximum control. You're comfortable with Linux and Docker.

Hetzner (Best Value)

  • Pricing: CX11 (2GB RAM, 1 vCPU, 20GB SSD) = €4.15/month (~$4.50)
  • Best for: maximum performance per dollar, located in EU
  • My experience: running 3 side projects on single CX11, zero downtime in 18 months
  • Gotcha: EU-only data centers (add latency if users are in US/Asia)

DigitalOcean

  • Pricing: Basic Droplet (1GB RAM, 1 vCPU) = $6/month, (2GB RAM) = $12/month
  • Best for: extensive documentation, 1-click apps (Docker, Node.js preinstalled)
  • Why developers like it: excellent tutorials, stable API, predictable pricing

Linode (Akamai)

  • Pricing: Nanode (1GB RAM) = $5/month
  • Best for: US-based projects, responsive support
  • Note: similar to DigitalOcean but with Akamai CDN integration

My recommendation: Hetzner for EU projects or if you want best performance/$. DigitalOcean for US projects or if you value documentation over price.

Databases: Neon vs Supabase vs PlanetScale vs Turso

Key principle: never host your database on the same server as your app unless you're optimizing for cost over reliability.

Neon (Postgres)

  • Free tier: 3GB storage, auto-pause after 5 min inactivity (instant wake)
  • Paid: $19/month for always-on + 10GB
  • Best for: Postgres side projects, generous free tier
  • My experience: using for 4 projects, wake-from-sleep is <200ms (unnoticeable)

Supabase (Postgres + Auth + Storage)

  • Free tier: 500MB database, pauses after 1 week inactivity
  • Paid: $25/month for 8GB database + auth + storage
  • Best for: full-stack projects needing auth and file storage
  • Gotcha: free tier auto-pause after 7 days requires manual restart

PlanetScale (MySQL)

  • Free tier: eliminated December 2024
  • Paid: $39/month minimum
  • Verdict: too expensive for side projects now

Turso (SQLite)

  • Free tier: 9GB storage, 1 billion row reads/month
  • Best for: edge deployments, read-heavy apps, SQLite compatibility
  • Note: distributed SQLite, different mental model than Postgres/MySQL

My recommendation: Neon for Postgres projects (best free tier). Supabase if you need auth + storage included. Turso for edge/SQLite use cases.

Actual Costs: What You'll Really Pay (3 Real Examples)

Forget hypothetical pricing. Here's what I actually pay for three production side projects:

Example 1: Marketing Site + Blog (Static)

Stack: Astro static site, deployed to Cloudflare Pages

  • Hosting: $0 (within free tier, 2000 visits/day)
  • Domain: $12/year
  • Analytics: $0 (using Cloudflare Web Analytics)
  • Total: $1/month
  • Deploy time: 2 minutes from git push
  • Maintenance: 0 hours/month

Example 2: SaaS MVP (Full-Stack with Auth)

Stack: Next.js frontend (Vercel), FastAPI backend (Railway), Postgres (Neon), auth (Clerk)

  • Frontend (Vercel): $0 (Hobby tier, <100GB bandwidth)
  • Backend (Railway): $7/month (512MB instance, always-on)
  • Database (Neon): $0 (free tier, 200MB used)
  • Auth (Clerk): $0 (free tier, <10K MAU)
  • Domain: $12/year = $1/month
  • Total: $8/month
  • Deploy time: 3 minutes (frontend), 4 minutes (backend)
  • Maintenance: 1-2 hours/month (monitoring logs, occasional bug fixes)

Example 3: Automated Data Tool (Background Job)

Stack: Python scraper + API (Hetzner VPS), SQLite database, nginx

  • VPS (Hetzner CX11): $4.50/month
  • Backup storage (Backblaze B2): $0.50/month (10GB)
  • Domain: $12/year = $1/month
  • Total: $6/month
  • Deploy time: 8 minutes (SSH, git pull, docker-compose restart)
  • Maintenance: 3-4 hours/month (SSH updates, log rotation, monitoring setup)

Cost Reality Check

If you're spending more than $30/month before you have paying users, you're premature optimizing. The biggest cost for side projects isn't hosting—it's your time. Choose hosting that minimizes your maintenance hours, not your monthly bill.

Hidden cost example: A $4/month VPS that requires 5 hours/month of maintenance costs $504/month if you value your time at $100/hour. A $20/month PaaS that requires 10 minutes/month costs $37/month all-in.

Essential Ops Checklist (Don't Launch Without These)

Regardless of hosting choice, these five things separate "working side project" from "production-ready side project":

1. Automated Database Backups (Test Restore Once)

  • Managed databases: backups are automatic (Neon, Supabase, Railway DB)
  • Self-hosted: daily cron job to backup and upload to S3/B2, keep 7 days of backups
  • Critical: restore from backup once to verify it works—untested backups aren't backups

2. HTTPS with Auto-Renewal

  • Modern platforms: automatic (Cloudflare, Vercel, Railway, etc.)
  • VPS: use Certbot with Let's Encrypt, auto-renewal via cron
  • Why it matters: browsers show scary warnings without HTTPS, kills trust instantly

3. Basic Uptime Monitoring and Alerts

  • Free tools: UptimeRobot (50 monitors free), BetterStack (10 monitors free)
  • Setup: ping your site every 5 minutes, email/SMS alert on downtime
  • Why it matters: you want to know your site is down before users tweet about it

4. Structured Logging You Can Search

  • Modern platforms: built-in (Railway, Render, Vercel logs tab)
  • VPS: use Docker logs or Loki for aggregation
  • Why it matters: "user reported bug" is useless without logs showing what actually happened

5. Environment Variables for All Secrets

  • Never commit: API keys, database URLs, auth tokens
  • Use platform's env var system (Railway, Render, Vercel all have UI for this)
  • VPS: use .env file loaded by Docker Compose, add to .gitignore

Reality check: if any of these five things takes more than 15 minutes to set up on your hosting platform, that platform is too complicated for a side project. Pick something simpler.

5-Minute Deploy: What It Should Look Like

Good hosting should feel like magic. Here's what I expect from every platform I use:

Ideal Static Site Deploy (Cloudflare Pages Example)

1. Connect GitHub repo (one-time, 30 seconds)
2. Configure build command: npm run build
3. Set output directory: dist
4. Click "Deploy"
5. Wait 2 minutes
6. Site live at https://project.pages.dev
7. Custom domain: add CNAME, auto-SSL in 5 minutes

Total time: 7 minutes for first deploy
Subsequent deploys: git push, wait 2 min, done

Ideal Backend Deploy (Railway Example)

1. Connect GitHub repo (30 seconds)
2. Railway auto-detects: Node.js app, detects package.json
3. Click "Deploy"
4. Add Postgres service (click button, 20 seconds)
5. Environment variables auto-added (DATABASE_URL injected)
6. Wait 3 minutes
7. API live at https://project.up.railway.app

Total time: 5 minutes for first deploy
Subsequent deploys: git push, wait 2 min, live

Red Flags: When to Pick Different Hosting

  • Requires manual SSL setup: this should be automatic in 2026
  • No Git integration: if you're FTPing files, you're using 2010 hosting
  • Deploy takes >10 minutes: something is wrong (or your build is too large)
  • Can't see logs without SSH: debugging will be painful
  • Documentation requires "ask in Discord": docs should be self-serve

Three Copy-Paste Setups (Pick One and Ship Today)

Stop researching. Pick one of these proven stacks and start building:

Setup 1: SaaS MVP (Auth + Payments + Database)

Stack: Next.js (Vercel) + tRPC/REST API (Railway) + Neon Postgres + Clerk Auth + Stripe

Why this works: Vercel's free tier is generous for frontend. Railway handles backend for $7/month. Neon Postgres free tier includes auto-backups. Clerk auth free tier covers up to 10K users. You can build and launch for $0-7/month total.

Deploy process: Connect repos to Vercel and Railway, add env vars, push code. Both platforms auto-deploy on git push. Total setup time: 20 minutes.

When to upgrade: When you cross 100GB bandwidth/month (Vercel) or need bigger database (Neon paid tier at $19/month).

Setup 2: API Tool + Background Jobs

Stack: FastAPI/Express API (Hetzner VPS) + SQLite or Postgres (same VPS) + Backblaze B2 backups + Caddy (auto-SSL)

Why this works: VPS gives you full control for cron jobs, workers, and long-running processes. Costs $4.50/month for Hetzner CX11 (2GB RAM). Single server simplifies architecture for tools without heavy traffic.

Deploy process: SSH into VPS, clone repo, set up Docker Compose, configure Caddy for auto-SSL. Slightly more complex (45 minutes first time), but you control everything.

When to upgrade: When you need high availability (move to Railway/Fly.io) or traffic exceeds single VPS capacity.

Setup 3: Marketing Site + Newsletter

Stack: Astro/Hugo static site (Cloudflare Pages) + newsletter form (serverless function or ConvertKit) + analytics (Cloudflare Web Analytics)

Why this works: Completely free. Cloudflare Pages has unlimited bandwidth. Static sites are fast globally via CDN. No server to maintain.

Deploy process: Connect GitHub repo to Cloudflare Pages, set build command, done. Subsequent deploys automatic on git push. Setup time: 10 minutes.

When to upgrade: When you need server-side logic (move to Next.js on Vercel or add serverless functions).

Decision Helper

  • Need auth, payments, real-time features: Setup 1 (SaaS stack)
  • Need cron jobs, scrapers, background workers: Setup 2 (VPS)
  • Just need a website with content: Setup 3 (static hosting)

How to Switch Hosting Later (Portable Architecture Tips)

Reality: your first hosting choice won't be your last. Design for portability from day one.

Separation of Concerns (The Key Rule)

Keep your database separate from your app hosting. This single decision makes every future migration 10x easier.

  • Right: app on Railway, database on Neon → can switch app to Fly.io in 30 minutes, database stays untouched
  • Wrong: app and database on same Railway Postgres → migrating app requires database migration too

Four Rules for Portable Side Projects

1. Environment variables for all config

  • Database URL, API keys, feature flags—all in env vars
  • Never hardcode URLs or hostnames
  • Makes switching hosts a matter of updating env vars, not code changes

2. Containerize with Docker (even if platform doesn't require it)

  • Write a Dockerfile even for platforms with buildpacks (Railway, Render)
  • Dockerfile = portable deployment recipe that works anywhere
  • Can test locally with exact production environment

3. Document your deployment process (takes 10 minutes)

  • Create DEPLOY.md in your repo
  • List: required env vars, build command, start command, external services
  • Future you (or future platform) will thank you

4. Avoid platform-specific features early

  • Skip Vercel's proprietary edge config for first 6 months
  • Don't build on AWS-specific services until you have real scale needs
  • Standard Postgres/Redis/Node.js works everywhere

Real Migration Example: Railway → Fly.io

Scenario: I migrated a side project from Railway to Fly.io to get multi-region deployment. Database stayed on Neon.

Process:

1. Install flyctl CLI
2. Run: fly launch (detects existing Dockerfile)
3. Copy environment variables from Railway to Fly
4. Deploy: fly deploy
5. Test on Fly's URL
6. Update DNS to point to Fly
7. Verify, then shut down Railway app

Total time: 45 minutes
Downtime: 2 minutes during DNS propagation

What made it easy: database was already separate, Dockerfile existed, all config in env vars. Zero code changes required.

Common Mistakes (I've Made All of These)

Mistake 1: Over-Engineering Before Launch

What I did: Spent 2 weeks setting up Kubernetes on DigitalOcean for a side project with zero users.

Reality check: that project died before getting 100 users. Kubernetes was complete overkill. Railway would have taken 15 minutes to set up and cost $7/month instead of $50/month for the DO cluster.

Lesson: use the simplest hosting that works. Upgrade when traffic proves you need it.

Mistake 2: Choosing Cheap VPS Over Managed Platform

What I did: Chose a $4/month Hetzner VPS instead of $15/month Railway to save money.

Reality check: spent 8 hours over 3 months maintaining that VPS (updates, monitoring setup, security patches, troubleshooting). At $100/hour effective rate, that VPS "saved" me $11/month but cost $800 in time.

Lesson: VPS is great for specific use cases (background jobs, cron). For user-facing apps, PaaS is usually worth the premium.

Mistake 3: Not Separating Database from App

What I did: Ran Postgres on the same DigitalOcean droplet as my Node.js app to save $15/month on managed DB.

Reality check: 6 months later wanted to migrate app to Railway but couldn't without complex database migration. Took 4 hours to migrate data, caused 2 hours of downtime.

Lesson: managed databases are worth every penny. Neon's free tier exists—use it.

Mistake 4: Ignoring Free Tier Limits

What I did: Used Render's free tier for a user-facing app without understanding it sleeps after 15 minutes.

Reality check: every first visitor after idle period waited 60 seconds for cold start. Got complaints about "site being slow." Damaged early user trust.

Lesson: read free tier fine print. Cold starts are fine for internal tools, not user-facing apps. Either pay $7/month for always-on or use different platform.

Mistake 5: No Backups Until Data Loss

What I did: Ran production side project for 3 months on self-hosted Postgres with no backups.

Reality check: VPS disk failed. Lost 3 months of user data. Had to email 50 users explaining data loss. Killed project momentum.

Lesson: backups are non-negotiable. Managed databases include backups. If self-hosting, set up automated backups on day one, not "eventually."

Frequently Asked Questions: Best Hosting for Side Projects

Find answers to common questions

Railway ($7/month) or Cloudflare Pages (free for static sites) are the best starting points for most side projects. Railway offers git-based deploys, automatic SSL, built-in Postgres, and excellent logging—everything you need to launch quickly. For static sites (marketing pages, portfolios, docs), Cloudflare Pages provides unlimited bandwidth and instant deploys for free. Both platforms minimize maintenance and deployment friction.
Free hosting is excellent for early-stage projects IF you avoid platforms with cold starts. Cloudflare Pages, Netlify, and Vercel offer generous free tiers for static sites with no performance limitations. For backend apps, Neon Postgres (database) has a solid free tier, but avoid Render's free tier for user-facing apps—the 60-second cold start after 15 minutes of inactivity damages user experience. Railway's $5/month credit is a better "free-ish" option for backend apps.
Use PaaS (Railway, Render, Fly.io) for web apps with user-facing interfaces. Use VPS (Hetzner, DigitalOcean) for background jobs, cron tasks, or scrapers. PaaS costs 50-100% more ($7-15/month vs $4-6/month) but saves 5-10 hours/month in maintenance. For most developers, time is worth more than the cost difference. Exception: if you enjoy DevOps or need full control over system configuration, VPS makes sense.
Realistic costs for side projects in 2026: (1) Static site: $0-1/month (Cloudflare Pages free + domain). (2) Full-stack app: $7-20/month (Railway $7 + Neon free + domain). (3) VPS-based project: $5-10/month (Hetzner $4.50 + backup storage + domain). If you're paying more than $30/month before you have paying users, you're over-optimizing. The bigger cost is your time—choose hosting that minimizes maintenance hours.
For static sites: Cloudflare Pages (free with unlimited bandwidth). For backend apps: Hetzner VPS at €4.15/month (~$4.50) provides the best performance per dollar—2GB RAM, 20GB SSD, excellent uptime. However, "cheapest" isn't always best for side projects. A $4 VPS requiring 5 hours/month of maintenance effectively costs $504/month if you value your time at $100/hour. Railway at $7/month with near-zero maintenance is cheaper in total cost of ownership.
Yes, but with an important limitation: Vercel's free tier is for non-commercial use only. If you plan to monetize your side project (sell subscriptions, run ads, offer paid features), you need Vercel Pro at $20/user/month. For commercial side projects, consider alternatives: deploy frontend to Cloudflare Pages (free, no commercial restrictions) and backend to Railway. Vercel is excellent for Next.js projects and offers 100GB bandwidth/month free, but read the terms before launching a commercial product.
Pick Railway for the simplest deployment experience and best developer UX—deploy from GitHub in 3 minutes, excellent logs, built-in databases, $5 free credit monthly then pay-as-you-go. Pick Render if you need free background workers (they don't sleep), but avoid their free web tier (60-second cold starts). Pick Fly.io for WebSocket apps or multi-region deployment, but only if you're comfortable with Docker and more complex configuration. For most developers starting a side project, Railway is the best default choice.
No, unless you're optimizing for cost over everything else. Separate app and database hosting makes migrations painless—you can switch from Railway to Fly.io in 30 minutes if your database stays on Neon. Co-located databases make future moves require data migration, adding hours of work and downtime risk. Use managed databases with free tiers: Neon (Postgres, 3GB free), Supabase (Postgres + auth, 500MB free), or Turso (SQLite, 9GB free). The $5-15/month for managed database pays for itself in saved migration time and automatic backups.

Final Recommendation: Just Pick One and Ship

After 12 years of building side projects and trying every hosting option, here's my honest advice:

The "Good Enough" Stack (Works for 80% of Side Projects)

  • Static frontend: Cloudflare Pages or Netlify
  • Backend API: Railway or Render ($7/month)
  • Database: Neon Postgres (free tier)
  • Auth: Clerk or Supabase Auth (free tier)
  • Total cost: $0-7/month

Why this stack: deploys in minutes, scales to thousands of users without changes, costs almost nothing, requires near-zero maintenance. You can focus on building product instead of babysitting infrastructure.

When to Choose Differently

  • Need background jobs/cron: use Hetzner VPS ($4.50/month) instead of Railway
  • Need WebSockets: use Fly.io instead of Railway
  • Building mobile app backend: consider Supabase (includes auth + database + storage + realtime)
  • Want maximum control: use VPS, but understand you're trading time for control

The Real Secret

Hosting choice matters far less than you think. I've seen successful side projects on $4 VPSs and failed ones on $500/month AWS infrastructure. The difference wasn't hosting—it was whether the founder shipped consistently.

Pick hosting that lets you deploy in under 10 minutes, costs under $30/month, and doesn't require weekend maintenance. Then stop thinking about hosting and start building the thing people will actually use.

Action step: give yourself 1 hour to pick hosting and deploy. If you're still researching after 1 hour, you're overthinking it. Pick Railway, deploy, move on.