from localhost to production
Learn the parts of software school skips.
Practical guides to Git, deployment, Docker, and keeping an app running. Start with a repo and work toward something people can use.
learning paths
What do you want to do?
Choose a goal and follow the guides in order. Your progress stays in this browser.
-
Work with Git
Clone a repo, make a change on a branch, and open a pull request. Learn how to recover when a change goes wrong.
Beginner -
Deploy your app
Choose a host, deploy your app, connect a domain, and check the result before sharing it.
Beginner -
Run apps with Docker
Build an image, connect services, and keep your data between container replacements.
Beginner -
Set up your dev environment
Editors, terminals, Node versions, env vars, and the tooling that makes you fast instead of fighting your own machine.
Beginner -
Maintain a production app
Already deployed an app? Add checks, manage secrets, watch for errors, and practice recovering from an incident.
Intermediate
from the archive
Recently updated
Back for a specific problem? These are the latest additions and revisions.
-
How localhost becomes a real website
Understand the full journey from your local dev server to a live domain: DNS, hosting, builds, and everything in between.
read -
Manage Node.js versions
Why the Node.js version matters, how to check and pin it with .nvmrc, engines, nvm, fnm, or Volta, and the bugs a mismatch causes.
read -
Write your first Dockerfile
A real working Dockerfile for a Node and Express app, every instruction explained, plus .dockerignore and the node_modules trap.
read -
Check dependencies with npm audit
What npm audit compares your dependencies against, how to tell which findings matter for your project, and why npm audit fix --force deserves more fear than the warnings do.
read
A field guide for the work around the code
You can know how to program and still need help with a failed build or an unfamiliar terminal. These guides explain the steps, the reasons behind them, and how to check your work.
Why I built raindev.fyi