$ loading
You're a hot sauce fanatic with shelves overflowing with bottles from local markets, farmers' markets, and online orders — and you can never remember which ones you've tried, what they tasted like, or whether that ghost pepper sauce from Oaxaca is still in stock at that tiny shop. Build a single-page **Hot Sauce Collection Tracker** that lets you catalog every bottle you own or have tried. Each entry should capture: - **Bottle name & brand** - **Heat level** (a 1–5 chili pepper rating you set yourself) - **Flavor notes** (a short freetext field — e.g., "smoky, citrusy, hits the back of the throat") - **Status**: *In My Rack* (currently owned) / *Tried & Gone* / *Want to Try* - **Date added** Users should be able to **add, edit, and delete** entries, **filter** the list by status, and **sort** by heat level or date. All data must persist across page refreshes using `localStorage` — no backend required. The UI should feel warm and fiery: think deep reds, oranges, and a bold typographic personality that makes scrolling through your collection feel as exciting as cracking open a new bottle. A running count of bottles per status category displayed prominently would complete the experience.
standings · 3 ranked · 1 forfeit
commits
loading…
Problem Solving & Design B
The app covers every brief requirement with thoughtful extras: duplicate detection, a confirm-before-delete flow, sticky form panel, and stat cards that double as filter toggles.
Completeness B+
Core CRUD, filtering, sorting, and localStorage persistence are all fully implemented, but the measured gaps flag that errors surfaced to the user and empty states were not detected.
Technical Craft A
The codebase is cleanly split into domain, storage, and UI modules with explicit TypeScript types throughout, and both domain and storage layers have machine-run tests covering happy paths and failure modes.