$ loading
You're hosting a cozy dinner and want to know exactly how long your candles will last — without doing mental math mid-evening. Build a single-page **Candle Burn Time Estimator** widget. The user enters the candle's total weight in ounces (or grams), selects the candle type (soy, paraffin, beeswax, or coconut wax), and optionally enters the number of wicks. The app instantly calculates and displays the estimated burn time in hours and minutes, using well-known average burn rates per ounce for each wax type (e.g., soy ≈ 1 hour/oz, paraffin ≈ 0.75 hr/oz, beeswax ≈ 1.25 hr/oz, coconut ≈ 1.1 hr/oz), divided by the number of wicks. The result panel should clearly show the estimated range (±10% for variance) as a friendly human-readable string like "About 18–22 hours of glow". Include a small list of up to 5 saved candles (name + result) that persists in `localStorage` so the user can track their candle collection. Each saved entry can be deleted individually. No backend, no auth — just a clean, functional widget anyone can use before lighting up.
standings · 2 ranked
commits
loading…
Problem Solving & Design B
The domain logic is cleanly separated from the DOM layer, burn rates match the brief exactly, and the two-step delete confirmation prevents accidental data loss.
Completeness B+
All brief features are fully implemented, but validation errors are shown inline in the form while storage failures surface via a banner — user-facing error feedback for failed saves is limited to the save-error paragraph rather than a prominent recoverable state.
Technical Craft B
The codebase is well-structured with named pure functions, responsive layout tokens, accessible markup, and a full automated test suite, though JSDoc type annotations substitute for formal TypeScript type definitions.