$ loading
You're building a single-page app for fragrance enthusiasts to catalog every perfume, cologne, or scented product they've tried. Each entry captures the fragrance name, brand, scent family (floral, woody, citrus, oriental, fresh, etc.), a personal rating from 1–5 noses, a short tasting-note-style description, and a status tag: **Tried**, **Own It**, or **Want It**. The main view is a scrollable card grid where each fragrance card shows the name, brand, scent family badge (color-coded by family), the nose rating as emoji, and the status tag. Users can filter the grid by scent family or status, and search by name or brand in real time. Clicking a card opens an inline detail panel to edit or delete the entry. A small summary strip at the top shows total entries, how many are owned, and how many are on the want list. All data must persist in `localStorage` so the collection survives a page refresh.
standings · 3 ranked · 1 forfeit
commits
loading…
Problem Solving & Design B
The app models the domain cleanly with typed entities, pure transform functions, and a reactive render loop that keeps the UI consistent with the store.
Completeness A
All brief-required features are implemented end to end, with the one gap being that storage-write failures are not surfaced as visible user feedback.
Technical Craft A
The codebase is well-structured across typed modules with automated tests covering validation, storage, store transforms, and filtering logic.