{"course":{"slug":"building-apps-with-ai","title":"Building Apps with AI","url":"https://addaly.com/learn/building-apps-with-ai","level":"beginner","track":"build"},"lesson":{"slug":"a-machine-that-can-build","title":"Getting a machine that can actually build","url":"https://addaly.com/learn/building-apps-with-ai/a-machine-that-can-build","position":5,"of":87,"minutes":9,"answer":"A working setup is Node via a version manager, git, an editor and WSL on Windows; if you cannot install any of it, Codespaces or Replit is a real path rather than a compromise.","keyIdea":"A working setup is Node via a version manager, git, an editor and WSL on Windows; if you cannot install any of it, Codespaces or Replit is a real path rather than a compromise."},"body":{"format":"markdown","text":"## The honest hardware question\n\nYou need less than people say and more than the marketing implies.\n\nA laptop with 8 GB of RAM and 20 GB of free disk will run everything in this course. 4 GB will struggle once a build and a browser are open together. A `node_modules` folder for one ordinary project is 300 to 600 MB, and people run out of disk before they run out of memory.\n\nYou do not need a GPU. Nothing here trains a model. The AI runs on somebody else's machine and arrives over the network.\n\nIf you are on a phone, or a Chromebook, or a shared machine you cannot install software on, skip to the hosted section below. That route is real, and it is how a large number of people are building.\n\n## The four things to install\n\n**A terminal.** Already there. On Windows, install **WSL** (`wsl --install` in PowerShell, then reboot) and use the Ubuntu terminal it gives you. This is not optional advice: nearly every instruction you will find online assumes Linux or Mac, and WSL makes them work instead of half-work.\n\n**Node.js.** Install it through a version manager rather than directly, because within a month some project will demand a different version. `nvm` on Mac and Linux, `nvm-windows` or `fnm` on Windows. Then `nvm install --lts`.\n\n**Git.** `git --version` will tell you if it is already there. If not, `brew install git`, `sudo apt install git`, or the installer from git-scm.com.\n\n**An editor.** VS Code is free and is what most tooling assumes. If you would rather not run Microsoft's build, **VSCodium** is the same editor compiled without the telemetry, and everything in this course works in it.\n\nThen check the whole chain in one go:\n\n```bash\nnode --version   # v20.x or later\nnpm --version\ngit --version\n```\n\nIf any of those says *command not found*, the install did not finish or your terminal is still using its old settings. Close it and open a new one before you believe anything.\n\n## The AI tool itself\n\nThree shapes, all with a real free tier as of early 2026:\n\n- **In the editor.** Cursor and Windsurf are VS Code forks with an agent built in. GitHub Copilot is an extension for the editor you already have. Continue is open source and can point at a free model.\n- **In the terminal.** Claude Code, Codex CLI, Aider. Aider is free and open source, and works against whichever model you can access.\n- **In the browser.** Replit, Lovable, Bolt, v0. Nothing to install.\n\nPrice moves constantly. What does not move: the free tiers are limited by volume, they are enough to learn on, and the difference between tools matters far less than the habits in this course.\n\n## If you cannot install anything\n\nThis is a completely workable path, not a consolation.\n\n**GitHub Codespaces** gives every free account a monthly allowance of hours on a full Linux machine with VS Code in the browser. It is the closest thing to a real development environment that runs on a phone.\n\n**Replit** runs entirely in the browser and has a mobile app that is usable for small edits. **StackBlitz** runs Node inside the browser tab itself, with nothing on a server.\n\nThe honest limits: typing code on a phone keyboard is slow and you will not enjoy long sessions, free compute hours run out, and browser environments sleep when you close the tab. For reading code, reviewing a diff, fixing a typo and redeploying, a phone is fine. For a three-hour build, borrow a keyboard.\n\n## The first five minutes of any project\n\n```bash\ngit clone <url>      # or start a new project\ncd <folder>\nnpm install          # reads package.json, downloads dependencies\nnpm run dev          # starts the development server\n```\n\nThen open the address it prints, usually `http://localhost:3000`.\n\nWhen this fails, it is almost always one of four things: you are in the wrong folder (`pwd` tells you), Node is the wrong version (the error will say so), port 3000 is already taken by something you started yesterday, or `npm install` did not actually finish. Read the last five lines of the output before doing anything else.\n\n## Set one thing up that everybody skips\n\nMake a folder for projects and keep them all in it. `~/code` or `~/projects`, one folder per app.\n\nIt sounds trivial. It is the difference between finding last month's work and rebuilding it, and it takes ten seconds now."},"check":{"question":"`npm run dev` fails on a project that worked yesterday, with an error naming an unsupported Node version. What is the appropriate response?","options":[{"text":"Delete node_modules and reinstall the dependencies.","correct":false,"tempting":"A common ritual that fixes corrupt installs; here the error already named the cause, and reinstalling under the wrong runtime changes nothing."},{"text":"Ask the AI tool to rewrite the code so it runs on the version you have.","correct":false,"tempting":"Treats a version mismatch as a code problem and invites edits across a working project to avoid a one-line switch."},{"text":"Switch Node versions with your version manager, which is why you installed one.","correct":true},{"text":"Upgrade to the newest Node release available.","correct":false,"tempting":"Assumes newer is compatible; projects pin versions in both directions, and the newest release is a frequent source of the same error."}]},"prev":{"slug":"what-the-model-cannot-see","title":"What the model cannot see, and how to give it eyes","url":"https://addaly.com/learn/building-apps-with-ai/what-the-model-cannot-see"},"next":{"slug":"the-terminal-without-fear","title":"The terminal, for people who have been avoiding it","url":"https://addaly.com/learn/building-apps-with-ai/the-terminal-without-fear"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'Getting a machine that can actually build', in Building Apps with AI. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/building-apps-with-ai/a-machine-that-can-build (Accessed: 13 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"Getting a machine that can actually build","courseTitle":"Building Apps with AI","module":{"index":1,"slug":"the-machine-and-the-model","title":"The machine, and what the model can see of it"},"answer":null,"keyIdea":"A working setup is Node via a version manager, git, an editor and WSL on Windows; if you cannot install any of it, Codespaces or Replit is a real path rather than a compromise.","hero":{"kind":"plate","image":null,"alt":null,"caption":null},"blocks":[{"t":"h2","id":"the-honest-hardware-question","runs":[{"text":"The honest hardware question"}]},{"t":"p","runs":[{"text":"You need less than people say and more than the marketing implies."}]},{"t":"p","runs":[{"text":"A laptop with 8 GB of RAM and 20 GB of free disk will run everything in this course. 4 GB will struggle once a build and a browser are open together. A "},{"text":"node_modules","code":true},{"text":" folder for one ordinary project is 300 to 600 MB, and people run out of disk before they run out of memory."}]},{"t":"p","runs":[{"text":"You do not need a GPU. Nothing here trains a model. The AI runs on somebody else’s machine and arrives over the network."}]},{"t":"p","runs":[{"text":"If you are on a phone, or a Chromebook, or a shared machine you cannot install software on, skip to the hosted section below. That route is real, and it is how a large number of people are building."}]},{"t":"h2","id":"the-four-things-to-install","runs":[{"text":"The four things to install"}]},{"t":"p","runs":[{"text":"A terminal.","b":true},{"text":" Already there. On Windows, install "},{"text":"WSL","b":true},{"text":" ("},{"text":"wsl --install","code":true},{"text":" in PowerShell, then reboot) and use the Ubuntu terminal it gives you. This is not optional advice: nearly every instruction you will find online assumes Linux or Mac, and WSL makes them work instead of half-work."}]},{"t":"p","runs":[{"text":"Node.js.","b":true},{"text":" Install it through a version manager rather than directly, because within a month some project will demand a different version. "},{"text":"nvm","code":true},{"text":" on Mac and Linux, "},{"text":"nvm-windows","code":true},{"text":" or "},{"text":"fnm","code":true},{"text":" on Windows. Then "},{"text":"nvm install --lts","code":true},{"text":"."}]},{"t":"p","runs":[{"text":"Git.","b":true},{"text":" "},{"text":"git --version","code":true},{"text":" will tell you if it is already there. If not, "},{"text":"brew install git","code":true},{"text":", "},{"text":"sudo apt install git","code":true},{"text":", or the installer from git-scm.com."}]},{"t":"p","runs":[{"text":"An editor.","b":true},{"text":" VS Code is free and is what most tooling assumes. If you would rather not run Microsoft’s build, "},{"text":"VSCodium","b":true},{"text":" is the same editor compiled without the telemetry, and everything in this course works in it."}]},{"t":"p","runs":[{"text":"Then check the whole chain in one go:"}]},{"t":"code","lang":"bash","label":"Bash","text":"node --version   # v20.x or later\nnpm --version\ngit --version"},{"t":"p","runs":[{"text":"If any of those says "},{"text":"command not found","i":true},{"text":", the install did not finish or your terminal is still using its old settings. Close it and open a new one before you believe anything."}]},{"t":"h2","id":"the-ai-tool-itself","runs":[{"text":"The AI tool itself"}]},{"t":"p","runs":[{"text":"Three shapes, all with a real free tier as of early 2026:"}]},{"t":"ul","items":[[{"text":"In the editor.","b":true},{"text":" Cursor and Windsurf are VS Code forks with an agent built in. GitHub Copilot is an extension for the editor you already have. Continue is open source and can point at a free model."}],[{"text":"In the terminal.","b":true},{"text":" Claude Code, Codex CLI, Aider. Aider is free and open source, and works against whichever model you can access."}],[{"text":"In the browser.","b":true},{"text":" Replit, Lovable, Bolt, v0. Nothing to install."}]]},{"t":"p","runs":[{"text":"Price moves constantly. What does not move: the free tiers are limited by volume, they are enough to learn on, and the difference between tools matters far less than the habits in this course."}]},{"t":"h2","id":"if-you-cannot-install-anything","runs":[{"text":"If you cannot install anything"}]},{"t":"p","runs":[{"text":"This is a completely workable path, not a consolation."}]},{"t":"p","runs":[{"text":"GitHub Codespaces","b":true},{"text":" gives every free account a monthly allowance of hours on a full Linux machine with VS Code in the browser. It is the closest thing to a real development environment that runs on a phone."}]},{"t":"p","runs":[{"text":"Replit","b":true},{"text":" runs entirely in the browser and has a mobile app that is usable for small edits. "},{"text":"StackBlitz","b":true},{"text":" runs Node inside the browser tab itself, with nothing on a server."}]},{"t":"p","runs":[{"text":"The honest limits: typing code on a phone keyboard is slow and you will not enjoy long sessions, free compute hours run out, and browser environments sleep when you close the tab. For reading code, reviewing a diff, fixing a typo and redeploying, a phone is fine. For a three-hour build, borrow a keyboard."}]},{"t":"h2","id":"the-first-five-minutes-of-any-project","runs":[{"text":"The first five minutes of any project"}]},{"t":"code","lang":"bash","label":"Bash","text":"git clone <url>      # or start a new project\ncd <folder>\nnpm install          # reads package.json, downloads dependencies\nnpm run dev          # starts the development server"},{"t":"p","runs":[{"text":"Then open the address it prints, usually "},{"text":"http://localhost:3000","code":true},{"text":"."}]},{"t":"p","runs":[{"text":"When this fails, it is almost always one of four things: you are in the wrong folder ("},{"text":"pwd","code":true},{"text":" tells you), Node is the wrong version (the error will say so), port 3000 is already taken by something you started yesterday, or "},{"text":"npm install","code":true},{"text":" did not actually finish. Read the last five lines of the output before doing anything else."}]},{"t":"h2","id":"set-one-thing-up-that-everybody-skips","runs":[{"text":"Set one thing up that everybody skips"}]},{"t":"p","runs":[{"text":"Make a folder for projects and keep them all in it. "},{"text":"~/code","code":true},{"text":" or "},{"text":"~/projects","code":true},{"text":", one folder per app."}]},{"t":"p","runs":[{"text":"It sounds trivial. It is the difference between finding last month’s work and rebuilding it, and it takes ten seconds now."}]}],"check":{"question":[{"text":"npm run dev","code":true},{"text":" fails on a project that worked yesterday, with an error naming an unsupported Node version. What is the appropriate response?"}],"options":[{"text":[{"text":"Delete node_modules and reinstall the dependencies."}],"correct":false,"tempting":[{"text":"A common ritual that fixes corrupt installs; here the error already named the cause, and reinstalling under the wrong runtime changes nothing."}]},{"text":[{"text":"Ask the AI tool to rewrite the code so it runs on the version you have."}],"correct":false,"tempting":[{"text":"Treats a version mismatch as a code problem and invites edits across a working project to avoid a one-line switch."}]},{"text":[{"text":"Switch Node versions with your version manager, which is why you installed one."}],"correct":true,"tempting":null},{"text":[{"text":"Upgrade to the newest Node release available."}],"correct":false,"tempting":[{"text":"Assumes newer is compatible; projects pin versions in both directions, and the newest release is a frequent source of the same error."}]}],"order":[1,0,2,3],"why":null},"prev":{"slug":"what-the-model-cannot-see","title":"What the model cannot see, and how to give it eyes","minutes":8},"next":{"slug":"the-terminal-without-fear","title":"The terminal, for people who have been avoiding it","minutes":8}}}