A project that only runs on your machine is not finished, and the distance between the two is smaller than it looks. Deploying is a build step, a run step, a name that points at the right address, and a set of values you keep out of your code. None of it is conceptually hard. All of it is unfamiliar the first time, and the errors are unhelpful because they assume you already know the vocabulary.

This section gives you that vocabulary and the handful of decisions that come with it: where to host and what it will cost you, how a domain finds your server, which values must never reach GitHub, how to keep test data away from real users, and how to get back to the previous version quickly when a deploy goes badly. It assumes your project is already on GitHub, since that is what a host deploys from.

  1. What deploying actually means
  2. Hosting, and what it costs
  3. Domains and DNS
  4. Your machine, staging, production
  5. Secrets and environment variables
  6. Deploying, and undoing a deploy