- Courses
- Your Developer Setup
- Capstone
Capstone project for Your Developer Setup
A starter repo every new developer can clone
Mangrove Market's Store app team is hiring two developers, and Ken, the engineering manager, is tired of new hires losing their first day to setup. He asks you to build store-tools, a small starter repository that any new developer can clone and have working and checked in under 30 minutes on Windows or macOS. It contains one useful script: report.js reads a sales CSV (siteId, articleCode, qty, amountCents) and prints the number of lines and the total in dollars for each store, keeping money as integer cents, and it fails properly on bad input. Around it, set up everything the course taught: npm scripts, a pinned Node version, Prettier, ESLint with flat config, EditorConfig, shared VS Code files, a pre-commit hook and a README that a stranger can follow. Push it to a public GitHub repository (a free account is enough) so the reviewer can clone it and check your setup.
What you hand in
- report.js and a sample data/sales.csv: per-store line counts and totals, a clear message on stderr and exit code 1 when the file is missing
- package.json with start, lint, format and format:check scripts, an exact Prettier version, and an .nvmrc
- eslint.config.js (flat config, eslint-config-prettier last), .prettierrc.json and .editorconfig
- .vscode/settings.json, extensions.json and a lint task, with a .gitignore that keeps personal VS Code files out
- A husky and lint-staged pre-commit hook, and a README with Getting started steps and the expected output
Check your work
Tick each item when your project meets it. Be strict: this is the rubric the reviewer uses.
- A fresh clone reaches a working npm start using only the commands in the README
- Totals are calculated in integer cents and match a hand calculation for the sample file
- The script exits with 0 on success, and with a non-zero code and a stderr message on bad input
- npm run lint and npm run format:check both pass, and Prettier is pinned to an exact version
- ESLint uses flat config with eslint-config-prettier last, so ESLint and Prettier never fight
- The workspace settings contain only settings that affect the code: no themes, font sizes or personal paths
- The pre-commit hook blocks a commit with an ESLint error and lets the fixed version through, formatted
- The README names the Node version, has no $ prompts, and says what to do when a command is not found
0 of 8 checked
Model answer
The model answer opens once your capstone passes the review, so you can compare your work with an outline of a strong submission.
Hand in your capstone
Your links are checked automatically, then the work is scored against the rubric above, item by item, with comments. A pass counts toward the course certificate and shows on your profile.
Loading…