Case Study · Garden Planning 2026
FLOUR
ISH.
3
Beds
22+
Actions
4.2K
Lines
Mobile
First
Garden planning and tracking app. Multi-bed grid, seed start kanban, succession planning, weather integration, and soil monitoring — built solo with Claude Code.
screenshot · 1200×600
The Problem
Gardening is chaos on paper.
Managing a garden across multiple beds means tracking what's planted where, when to start seeds indoors, when to transplant, when to succession-plant the next round, and what the soil looked like three weeks ago. Most gardeners use spreadsheets, notebooks, or nothing — and lose track by mid-season.
screenshot · garden view
What I Built
Four core systems.
01
Multi-Bed Garden Grid
Visual planning across 3 independent beds (south, middle, north) with color-coded plant statuses. Each cell tracks what's planted, its status (growing, producing, issue, done), and succession windows. Tap any cell for full plant detail.
screenshot · mobile
02
Seed Start Kanban
Track indoor seed progression through a 6-stage workflow: seeded → germinated → true leaves → potted up → hardening off → transplanted. Kanban board with drag-and-drop stage transitions and tray cell assignments.
screenshot · mobile
03
Activity Timeline
Log 22+ gardening actions (seeded, fertilized, harvested, watered, pruned, and more) with timestamps, plant references, and notes. Full history per plant, per bed, or across the entire garden.
screenshot · mobile
04
Weather & Soil Monitoring
Real-time weather integration with weekly planning view. Soil metrics tracking with charts — monitor conditions per bed over time. Fertilizer application logs keep a permanent record of what went where.
screenshot · mobile
Technical Decisions
Build vs. configure.
1
Zustand over Redux or Context
Garden state is deeply nested (beds → cells → plants → status/history) but updates are always surgical — one cell at a time. Zustand's slice pattern keeps the store flat and fast without Redux boilerplate or Context re-render issues. Single store, zero providers.
2
Mobile-first, not responsive-after
Gardening happens outside, phone in hand. Built mobile breakpoints first, then expanded for tablet/desktop. Touch targets, swipe gestures, and compact information density designed for one-handed use in the dirt.
3
Local-first with seasonal archives
No backend, no accounts. All data lives in Zustand with persistence. At season end, archive the full state and start fresh. Previous seasons are restorable. Eliminates server costs and auth complexity for a single-user gardening tool.
Stack
React 19
TypeScript
Vite
Tailwind CSS v4
Zustand
ESLint
Try it.
Open Flourish →
← Back to all projects