← Back to Homepage

Plant Tracker

Case study · Tech & fun

Photograph a plant, and a care plan grows back

What
A camera-first houseplant tracker: photo in — species ID, health score, and a care schedule out, with a daily digest of what needs you today.
Stack
Flask + Supabase behind a vanilla-JS PWA; photo analysis runs out-of-band through Claude Code against a sourced species database.
Status
Active
Dates
Built July 2026 · Updated August 2026
Links
Local-only — runs on the home network, no public deploy or repo

Background

Can a phone camera keep a houseplant collection alive?

Plant Tracker (in-app: Plant Health — Track & Nurture) bets that the camera is the only interface a plant app actually needs. Add a plant by photographing it, and the system identifies the species, reads its condition, and generates a care schedule — watering, light, feeding, repotting — from a research-backed species database where every care claim carries a source. A daily digest then triages the whole collection into "what needs you today."

The architectural twist: the backend never calls an AI API. Photos land in a pending queue, and a Claude Code session — a skill invoked by hand, or a daily routine — picks them up, does the vision analysis, and writes care profiles back. No API keys, no per-request bill, and the Flask app stays a dumb, reliable CRUD server.

A Look Inside

Each view shown on mobile and desktop — captured from the app running locally. Personal tool, no public deploy.

The Today digest triages the whole collection into what actually needs you (mobile) The Today digest triages the whole collection into what actually needs you (desktop)
The Today digest triages the whole collection into what actually needs you — species-specific tasks with overdue states, then the watering schedule coming up.
Every plant gets a dossier: care cadences from a sourced species database (mobile) Every plant gets a dossier: care cadences from a sourced species database (desktop)
Every plant gets a dossier: care cadences from a sourced species database, one-tap Watered / Fed / Repotted logging, and an AI read of the latest photo.

How It Works

A small Flask + Supabase backend serves an installable vanilla-JS PWA; everything intelligent happens out-of-band:

Local-only by choice: it runs on the home network for one household and its plants — including a banana plant that is, against the odds, fruiting indoors.


← Back to Homepage