Explainer · outline · 2026-08-12

Where the code runs

People think they are choosing a framework. They are choosing a place. Get the place right and the brand on the box matters less.

The lie

Stack advice starts at names: React or Svelte, Next or Rails, Python or TypeScript. Those names smuggle a location. Next.js assumes code runs on a server and in the browser, and that hosting is shaped like Vercel. A Flask app on a $5 VPS assumes one process on a box you rent. A Worker assumes a function that wakes up, runs, and dies. If you cannot say the location sentence, you do not have a stack opinion. You have a brand preference.

Six places

Almost every amateur idea fits in one of these. Some products use two. Almost none need four on day one.

1. Your laptop

A script, a notebook, a file you open. Cost $0. Dies when the lid closes. Correct for “just me” more often than it feels.

2. The browser

HTML, CSS, and whatever JS you actually needed. Already on every visitor’s machine. Cannot keep a secret (API keys), cannot be trusted with money, cannot remember another computer’s data by itself.

3. An always-on server

A process that is running whether or not anyone is visiting. Forms, databases, sockets, cron. You pay for the time it exists. A VPS, Railway, Fly, a dusty NUC.

4. A function that wakes up

Serverless.” Code starts because a request (or a schedule) arrived, then it is gone. You pay per wake-up and per millisecond. Great until the thing must remember an open connection or stay warm.

5. The edge

Still a function, placed near the visitor. Fine for rewriting, auth checks, HTML that does not need a fat home-region database. Not magic. Not free. Latency to your data still exists.

6. A phone

A real installable thing. You do not need this on day one for a website that works in a browser. A home-screen bookmark is allowed.

What dies when

Laptop
The process dies when you close it. The file usually does not.
Browser tab
Memory dies on refresh unless you wrote it down (localStorage, a file, a URL). Secrets in the bundle are public.
Always-on server
Dies when the box does, or when you forget to pay. Memory in RAM dies then too; memory in a database file does not.
Function / edge
Dies at the end of the request. Anything you needed next time must live somewhere else (KV, a DB, object storage). An open websocket is swimming upstream.
Phone
Dies when the OS kills the app. Background work is a privilege, not a right.

Frameworks as packaged answers

How to use this from a result card

  1. Read the tier. Tier 0 is laptop. Tier 1 is browser (files). Tier 2 is an always-on server or a function plus a store. Tier 3 is the same places with more obligations, not new places.
  2. If the card says “files on a CDN,” you are not looking for a React framework. You are looking for a compiler or a text editor.
  3. If the card says “keep a connection open,” functions that wake up are the wrong place. That is the whole point of the realtime recipe.
  4. If the card says “the model is the product,” the secret lives on a server or a worker — never in the browser bundle.

Still an outline

A later pass should add: cold starts with a number attached, what “edge” cannot see, a picture of a request crossing places, and why “full stack TypeScript” is a hiring slogan rather than a location. The six places will not change.

Next: Static site, actually →