What Happens When You Type a URL and Press Enter
DNS lookups, TCP and TLS handshakes, HTTP requests, servers, and the browser's rendering pipeline. The whole journey of a web page, explained so it finally clicks.
Read →You can put a real full stack app online without a credit card. Here is how to split frontend, backend and database across free tiers, plus the traps that catch people later.
Building the app is half the job. The other half is getting it onto the internet, and for side projects, student work and early prototypes you want that to cost exactly nothing. The good news: you can deploy a full stack app for free today. The catch: no single platform gives you everything, so you need to pick the right free tier for each layer.
This guide is about the approach, which stays useful even as individual providers change their limits.
Almost every web app breaks down the same way:
Free platforms are usually great at one or two of these. Mixing providers is normal and perfectly professional.
Static and framework frontends are the most generously supported thing on the internet. Good free options include:
All of them follow the same flow: connect your Git repo, set the build command, push to deploy. That's it.
Here you have two shapes to choose from.
Serverless functions. If your API is a set of request/response handlers, you can often run it on the same platform as the frontend: Next.js route handlers on Vercel, Netlify Functions, or Cloudflare Workers. No server to manage, and you pay nothing at low traffic. The trade-offs are execution time limits and no long-lived connections or background workers.
A long-running server. If you need WebSockets, background jobs or a traditional Express/Django/Laravel app, you want a container or VM. Free options exist, but they usually come with conditions:
If your app is mostly CRUD, the serverless route is simpler and avoids cold-start pain on sleeping servers.
Managed databases with free plans are easy to find now. Popular picks:
I compared these in more depth in free database hosting for side projects.
For a typical React or Next.js app with user accounts:
| Layer | Pick |
|---|---|
| Frontend + API | Next.js on Vercel (or Netlify / Cloudflare) |
| Database + auth | Supabase or Neon |
| File storage | Your database provider's storage, or Cloudflare R2 |
| Domain | A free platform subdomain to start (or one of these) |
| CI | GitHub Actions (starter guide) |
Total monthly cost: zero, until you have real traffic. That's a nice problem to have.
pg_dump (a GitHub Action on a cron works) if the data matters.Yes. Either as serverless functions on Vercel, Netlify or Cloudflare, or as a long-running server on a free tier that sleeps when idle. For always-on servers, an always-free cloud VM is the most reliable option if you're comfortable managing Linux.
Host the React frontend on any static host, the Express API on a free web service or as serverless functions, and use MongoDB Atlas's free cluster for the database.
For hundreds of users, usually yes. Free tiers are generous for low traffic. The real limits are cold starts, inactivity pauses and connection caps, so test your app on the free plan before you announce it anywhere.
DNS lookups, TCP and TLS handshakes, HTTP requests, servers, and the browser's rendering pipeline. The whole journey of a web page, explained so it finally clicks.
Read →There are dozens of HTTP status codes, but about fifteen cover nearly everything. What each one means, when to return it, and the mix-ups (401 vs 403, 301 vs 302) that confuse everyone.
Read →A, AAAA, CNAME, MX, TXT and NS records in plain English, why DNS changes seem slow, and the troubleshooting commands that tell you what is really going on.
Read →