Turn a list of study topics into explicit application state, then render that state into the page.
Pair this exercise with the JavaScript notes.
- On GitHub, click Use this template → Create a new repository.
- Choose whether your repository will be public or private.
- Clone your new repository, then make changes in your own copy.
Lesson milestone: Session 3 — arrays, objects, map/filter/reduce, and event delegation
Time-box: 60–75 minutes
Dependencies: none
From this repository's root, start a local server:
python3 -m http.server 8000Open http://127.0.0.1:8000/.
- Render every object in topics as one list item.
- Add a topic object from the form.
- Handle complete and remove buttons through one list click listener.
- Filter the visible list with All, Open, and Done.
- Derive summary minutes with reduce instead of storing a second total.
- A valid title and minute estimate adds one topic.
- Empty titles and non-positive minutes are rejected by the form.
- Complete toggles a topic without deleting it.
- Remove deletes only the selected topic.
- All, Open, and Done filters show the correct objects.
- The summary is recalculated from the current array.
- An empty filter has a clear message and no console error.
Sort open topics by estimated minutes without mutating the original array. Explain why slice or toSorted is useful.
Try the stretch task only after the acceptance checklist passes.
-
Create your own copy from this template.
-
Read MASTERY.md, then create an attempt branch:
git switch -c attempt/my-project
-
Build the project and run the same check GitHub uses:
node --test test/mastery.test.mjs
-
Commit and push the attempt branch:
git add . git commit -m "Complete project attempt" git push -u origin attempt/my-project
GitHub Actions grades every pushed attempt automatically. PASS — NAILED IT means every required check passed. REVISE — KEEP BUILDING means the run shows what to fix before you push again. You do not need the KODE Ń VIBE owner to review or start anything; the template's main branch stays quiet on purpose.
The free grading guide explains the result and its limits.