The error that started everything — and why it was never your fault.
Someone who'd never written a line of code opens a terminal, types the word he was told to type, and hits enter.
"I typed what I was told. It said no. I didn't even know what npm was — that was literally my first question. I just wanted to build something."
"I should've said it faster: the command is npm install, and npm wasn't on the machine yet. You weren't being slow — the first five minutes of software are genuinely broken."
Every real app is built mostly from pre-made parts other people wrote and gave away — a thing that talks to Stripe, a thing that renders a PDF, a thing that handles dates. Hundreds of them. npm — Node Package Manager — is how you get them.
the store + truckA warehouse of millions of free building blocks, and the tool that fetches the ones you need.
the shopping listSmall, human-readable. Names every part your app needs. This is your work — your intent.
the garageThe giant pile of parts the truck dropped off. You didn't write any of it. Fully disposable.
Node is the engine that lets JavaScript run on your computer instead of just in a browser — and npm ships with it. That's why nothing could be installed until Node existed: the tool that does the installing wasn't there yet.
You typed install and got 'install' is not recognized. Pick what's really happening:
install. The command is npm install — and npm hadn't been installed yet. A can't-find-it problem, never a code bug.npm install. It reads package.json — your shopping list.node_modules garage fills with every fetched part, automatically..gitignore keeps that giant garage out of git — you can always re-fetch it.This is the rule of the whole course: you don't finish a module by watching it. You finish it by getting this right.
node_modules but never package.json?Keep the source of truth. Regenerate the derived artifact. The list is precious; the pile is disposable.
Not a certificate. A working part you'll use in every project from here on: a real starter .gitignore (so your garage never lands in git) and a .env.example (the safe way to share what secrets an app needs without sharing the secrets).