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.

flourish.ontheclock.live
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.
flourish.ontheclock.live
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.
3 BedsColor-CodedCell 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.
6 StagesKanban BoardTray Map
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.
22+ ActionsTimestampedPer-Plant History
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.
Weather APISoil ChartsFertilizer Logs
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