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 bets that the camera is the only interface a plant app needs. Photograph a plant, and the system identifies the species, reads its condition, and generates a watering, light, feeding, and repotting schedule from a species database where every care claim has a source. A daily digest then triages the collection into what needs you today.
The twist: the backend never calls an AI API. Photos land in a pending queue, and a Claude Code session, run by hand or as a daily routine, 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.
How It Works
A small Flask + Supabase backend serves an installable vanilla-JS PWA; everything intelligent happens out-of-band:
- Camera-first capture: add a plant from a photo, whether taken, chosen, pasted, or screenshotted; EXIF rotation is baked in and images downscaled before queueing.
- Out-of-band analysis: a Claude Code session drains the pending queue (species ID, a 1–10 health read, even pot details) and upserts each plant's care profile.
- Research-backed care: cadences come from a JSON species database with sourced care guides, propagation methods, common problems, and repotting rules.
- The Today digest: species-specific tasks with overdue states, the upcoming watering schedule, and one-tap Watered / Fed / Repotted logging.
- 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.