the full archive
All guides
Find the task you're working on. Guides within each topic build on each other.
New here? Choose a learning path or start with your first repo.
Git
Branches, PRs, merge conflicts, and the workflows behind collaborative development.
-
Clone a repo and make your first change
How to actually get code off GitHub: git clone versus ZIP downloads, remote-tracking branches, and the difference between git pull and git fetch.
read -
Work with Git branches and pull requests
Learn the actual Git workflow behind branches, commits, pull requests, and merge conflicts, the way professional teams use it.
read
Deploy
From localhost to a live domain, hosting, DNS, CDN, and production readiness.
-
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 -
Static sites and servers
Static builds, SPAs, SSR apps, backend APIs, full-stack apps, and databases, and why each one needs a different kind of home.
read -
Choose hosting for your frontend
What a frontend host actually does, how the beginner-friendly options compare, and how to pick one without starting a brand war.
read -
Choose hosting for your backend
Why a long-running server is a different beast from a static site, and when to reach for a managed platform versus a VPS.
read -
Connect your frontend to your backend
API URLs, CORS, HTTPS, env vars, and cookies, and why the localhost URL that worked all week dies the moment you deploy.
read -
Set up a custom domain and DNS
Registrars, nameservers, A and CNAME records, apex vs www, TTL, and propagation, explained without the jargon fog.
read -
Preview and production deployments
Branch deploys, pull-request previews, rollbacks, and the safe feature-branch-to-production workflow that keeps you from breaking the live site.
read
Docker
Images, containers, Dockerfiles, ports, volumes, and Compose, without the hype.
-
Docker without the buzzwords
Understand what Docker actually is and does (images, containers, Dockerfiles, ports, volumes, and Compose) without the enterprise hype.
read -
Images, containers, and Dockerfiles
The recipe, the snapshot, and the running instance: what an image, a container, and a Dockerfile actually are, and how docker build and docker run connect them.
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 -
Docker ports, volumes, and environment variables
The three Docker settings that break most beginner setups, and exactly what 3000:3000 really means.
read -
Run multiple services with Docker Compose
One file to start a Node API, PostgreSQL, and Redis together, with the networks, volumes, and env vars wired up.
read -
Keep your data with Docker volumes
Why containers are disposable but your data should not be, named volumes versus bind mounts, and how to reset a database on purpose instead of by accident.
read -
Connect containers with Docker networking
Why localhost means something different inside a container, how Compose service names work, and the API connection bugs that follow.
read -
Containerize a full-stack app
How Docker fits a real app with a frontend, a Node backend, Postgres, and Redis, and why the frontend is often Dockerized for dev but shipped as static files.
read -
Prepare a Docker image for production
Multi-stage builds, smaller images, non-root users, health checks, restart policies, and secrets, and why npm run dev is not a production command.
read -
Debug a Docker container
A practical survival guide for Docker problems: ps, logs, exec, inspect, rebuilding without cache, and reasoning through it built but does not work.
read
CI/CD
Automated testing, building, and deployment pipelines that protect your main branch.
Security
Secrets management, HTTPS, dependency audits, and the basics of secure shipping.
-
Store and rotate secrets
What counts as a secret, why it can never sit in your repo, and where it goes instead: a .env file locally, your host's dashboard in production, and a clear plan for the day a key leaks.
read -
Understand HTTPS and certificates
What plain HTTP exposes on a shared network, what TLS and certificates actually promise, and the one HTTPS job your host still leaves to you.
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 -
Check security before you ship
A practical pre-ship pass for your first real app: secrets, user input, passwords, dependencies, HTTPS, and the rules client-side JavaScript can never enforce.
read
Dev Setup
Environment variables, dotfiles, editors, and tools that make you fast.
-
Terminal commands for everyday development
The handful of terminal commands you actually use day to day, plus paths and flags, without the become-a-Linux-wizard detour.
read -
Set up VS Code for a project
Setting up VS Code for real projects: the extensions worth installing, format on save, and why user settings and workspace settings are different.
read -
Package managers and lockfiles
What npm, pnpm, and Yarn actually do, the role of package.json and lockfiles, npm install versus npm ci, and why deleting a lockfile is goblin behavior.
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 -
Environment variables explained
Learn what environment variables are, where they live, how to use them safely, and how not to accidentally leak your secrets.
read -
Automate commands with project scripts
The scripts block in package.json, the standard scripts every project should have, and running frontend and backend together.
read -
Set up ESLint and Prettier
The difference between a linter and a formatter, why ESLint and Prettier sometimes fight, format on save, project config, and running them in CI.
read -
Set up logs and breakpoints
Debugging as a process, not a panic ritual: logs, devtools, the Network tab, stack traces, breakpoints, VS Code launch configs, and a checklist.
read -
Run a database locally
Why real apps need a local database, how to run Postgres and Redis with Docker Compose, connection strings, seeds, migrations, resets, and the bugs in between.
read -
Save your setup with dotfiles
The dot-prefixed config files that keep a project consistent across machines: which to commit, which to keep local, and how they stop projects from rotting.
read
Testing
Unit tests, integration tests, and why tests are most useful when they're automated.
-
Why tests exist
Hand-checking your app is already testing. A test is that same check written down so a machine can repeat it forever, which is what makes code safe to change later.
read -
Choose unit and integration tests
What unit, integration, and end-to-end tests each cover, what each one costs, and how to split the work on your first real project.
read -
Write your first tests
Set up Vitest, write your first describe/it/expect tests, and aim them at the functions with real edge cases. Then break one on purpose, because a test you have never seen fail proves nothing.
read -
Run your tests in CI
Wire your test runner into GitHub Actions with one small workflow file, walk it line by line, and make the green check required so untested code can't reach main.
read
Production
Monitoring, logging, error tracking, and what to do when things go wrong at 3am.
-
Read logs and trace an error
Where logs live once your app is deployed, how to follow a stack trace back to your own code, and what is worth writing to the log in the first place.
read -
Monitor your app and set useful alerts
An outside uptime check, a health endpoint that actually touches the database, and alerts tuned so you still believe them. The minimum monitoring for a first real deployment.
read -
Track errors in production
Why users never report crashes, and how an error tracker catches them anyway: a small SDK, source maps to decode minified stack traces, and triage by users affected instead of raw event count.
read -
Respond to a production incident
An incident playbook for a team of one: confirm the outage is real, roll back before you debug, find the change that caused it, and write three sentences so the next one hurts less.
read