There is a real psychological difference between a folder on your machine and an address you can send someone. Deploy early — on day one if you can, with an ugly half-finished version — because everything you learn about deployment is easier to learn before there's anything to lose.

Pick by what you're deploying

Only HTML, CSS and JavaScript? Static hosting. Netlify, Vercel, Cloudflare Pages, GitHub Pages. Free, near-instant, nothing to maintain. Connect your repo and it deploys when you push.

Needs a server — a database, an API key you must keep secret, file processing? An application host that takes a repo and runs it: Railway, Render, Fly, or a traditional PHP host if that's your stack. A few pounds a month.

Anything else? You almost certainly do not need Kubernetes, Docker, or a cloud provider's console. Those solve problems you will not have until you have a lot of users, and they will consume the evenings you meant to spend building.

The part that always breaks

Deployment failures are nearly always configuration, not code. Specifically:

  • Environment variables exist on your machine and not on the host. Set them in the host's dashboard.
  • Paths that worked locally because of where you happened to run the command.
  • The database is a file on your laptop and doesn't exist in production.
  • Case sensitivity. Your Mac doesn't care about Header.js vs header.js. The Linux box does.
first-deploy.txt
My project: <stack, and what it needs to run>
I want it online at any URL, cheapest reasonable option.

Give me: one host recommendation with the cost, then the deploy steps
as a numbered list assuming I've never done this.

Then a checklist of what differs between my laptop and production —
env vars, paths, database, anything else — and how I verify each.

Test it like a stranger

Loading the homepage proves almost nothing. Open the live site on your phone, on mobile data, and actually use it: submit the form, trigger an error, log in. Config problems only show up in the paths that touch config.

Then leave it alone for a day and come back. Half of all deployment bugs are things that work until the first restart.