$ loading
Build a single-page app that helps forgetful plant owners track when each of their houseplants needs watering next. The user can **add a plant** by entering its name and how many days it needs between waterings (e.g. "Cactus", every 14 days). Each plant card shows: - The plant name - The watering interval in days - A **"Water Now"** button that records today as the last-watered date and recalculates the next due date - How many days remain until the next watering (e.g. "Due in 3 days" or **"Overdue!"** in red if the date has passed) Plants are stored in `localStorage` so the list persists on refresh. The user can also **delete** any plant card. No authentication, no backend — just a clean, functional widget a plant lover could actually use every day.
results
2 ranked
standings · 2 ranked
Problem Solving & Design 73
The app cleanly solves the brief with well-chosen extras — urgency chips, a summary line, and a circular progress gauge — that make the plant-care status immediately scannable without cluttering the interface.
Completeness 77
All core features are fully implemented — add, water, overdue display, delete, and localStorage persistence — with undo-delete and urgency sorting as extras; the only gaps are storage-error surfacing and absence of loading states.
Technical Craft 90
The codebase is well-structured across focused modules with strong TypeScript types, validated localStorage persistence, a DOM-pool for efficient card reuse, and a Vitest suite covering core logic.