JavaScript Essentials
Make things actually do things
Phase Goal
Read, write, and reason about modern JavaScript. End the phase with two interactive apps shipped to the web.
Open the written lectures for this course before checking off the phase topics.
Day 13: JS Runtimes & The Mental Model
Day 14: Functions & Scope
Day 15: Control Flow
Day 16: Arrays & Their Key Methods
Trail-condition digest
Given a hardcoded array of trail reports with route, difficulty, status, and last inspection, filter open routes, sort by inspection age, and render a compact digest using array methods only. No loops written by hand.
Day 17: Objects, Destructuring, Spread
Day 18: Classes & OOP in JS
Build an EquipmentPool class
Model a lending pool with private #loans, checkout(item), returnItem(id), availableCount getter, and a static empty() factory. Throw a custom LoanError when returning an unknown loan. No frameworks — run it with Node.
Day 19: DOM Manipulation
Inspection queue triage
Render incoming inspection reports with resolve actions. Use one delegated click listener on the queue container and preserve the report ID through data attributes.
Day 20: Events
Live filter for public meeting records
Filter a meeting-record index by committee, topic, or speaker in real time. Debounce by 200ms and render a useful no-matches state.
Day 21: Async JS — The Event Loop
Day 22: Promises & fetch
Astronaut roster viewer
Fetch the current people-in-space roster from a public API and render mission-grouped results. Show explicit loading, empty, stale, and failure states.
Day 23: async / await & Error Handling
Day 24: Storage, Dates, Numbers, Regex
Day 25: Modules, Bundlers, Tooling
Day 26: Practice — Build 10 Tiny Products
Ten shipped interface instruments
Ten single-page instruments — tide clock, lap marshal, medication interval timer, evacuation drill quiz, recovery-code generator, volunteer intake validator, water-usage ledger, specimen label board, package-status lookup, and duty roster. Each has a detailed spec, observable acceptance criteria, hidden hints, and a solution that unlocks only after a real attempt.
Day 27: Project — Build the Community Pantry Dispatch Board
Community Pantry Dispatch Board
Coordinate incoming food parcels through received, packed, assigned, and collected states. Support edits, deletion with undo, urgency and status filters, local persistence, keyboard operation, motion-safe feedback, and a high-contrast theme.
Day 28: Project — Public Art Walk Planner + Ship Both
Public Art Walk Planner
Search a civic public-art dataset by artist, neighborhood, or medium; render accessible works, cancel stale searches, paginate results, and save an ordered walking shortlist locally. Include loading, empty, error, retry, image-fallback, and mobile route-summary states.
Phase 2 Capstone — Two deployed civic tools
The Pantry Dispatch Board and Public Art Walk Planner are both live, polished, keyboard-operable, failure-aware, and documented with evidence of the state and async decisions you made.
Phase Complete!
After this phase, you'll be able to:
- Modern JS: closures, async/await, modules, ES2023+ features
- Comfortable with array methods + functional patterns
- DOM manipulation + event delegation
- Fetch API with proper loading/error/empty states
- Vite + ESLint + Prettier project setup
Two interactive apps in production. You can build small frontend apps end-to-end without React.