Passion Project

CultiVue

A self-hosted garden management platform supporting 15+ garden types. Multi-garden dashboards, IoT sensor integration, plant tracking, task management, and seed inventory, all with zero external dependencies.

Product Designer & Developer 3 Months (Ongoing) Web App (Self-Hosted) Node.js, Express, SQLite, Claude Code, Docker

The Setup

A self-hosted command center for growers who run more than one kind of garden.

CultiVue is a general-purpose garden management platform for hobbyists who juggle hydroponics, raised beds, containers, and aquaponics side by side. Built through AI-assisted iteration, it ships as a one-command Docker deploy with IoT sensor integration, multi-user auth, and zero external dependencies.

One platform for every growing method in the backyard.

Most garden trackers pick a lane — hydro or soil, indoor or outdoor. CultiVue treats the 15+ garden types as first-class citizens, with dynamic metrics that adapt to each system so growers stop stitching together three different apps to manage one backyard.

Your data stays on your hardware.

Self-hosted by design. Docker + SQLite means growers own the database, the sensor integrations, and the audit trail — without a subscription, a cloud dependency, or a vendor who can decide to sunset the product tomorrow.

CultiVue dashboard showing 6 gardens, 20 plants, 10 active tasks, and 80 log entries with real-time pH and PPM readings

The Landscape

Hobbyist growers don't run one kind of garden — they run all of them.

CultiVue started life as HydroMate — a focused Flutter mobile app for hydroponic nutrient tracking, built in three days by adapting Printory's architecture. It worked, but feedback surfaced a bigger pattern almost immediately: the same people running DWC and NFT systems also tended raised beds, containers, and the occasional aquaponics loop.

A narrow mobile app couldn't hold that scope. Every serious grower was stitching together two or three tools to track what should have been one coherent operation — and none of the tools let them keep their own data or plug in their own sensors.

CultiVue gardens list showing 6 gardens across hydroponic, soil, and drip system types with location badges and live metrics

Gardens list with type badges, location tags, and live pH/PPM readings per system.

The Mission

Rebuild HydroMate as a general-purpose, self-hosted platform for every garden type.

Write a new PRD defining a full-stack web app that handled 15+ garden types with dynamic per-system metrics, IoT sensor ingestion, multi-user auth, and Docker deployment — then build it through AI-assisted iteration without shipping a bloated frontend or giving up data ownership.

The Moves

Four bets, each testing a different risk.

01

A data model that adapts to every growing method

The hardest call early on was whether one schema could represent DWC, Kratky, NFT, drip, ebb & flow, raised beds, containers, and aquaponics without collapsing into mush. We landed on dynamic metrics per garden type — each system defines its own relevant measurements — so a hydroponic loop tracks pH and PPM while a raised bed tracks soil moisture, all from the same core tables.

CultiVue garden detail view showing plants with growth stage badges across tabbed Plants, Logs, and Tasks views
02

A zero-dependency frontend, on purpose

Vanilla JavaScript and CSS custom properties instead of React or Tailwind. That sounds like masochism until you remember the target user is someone running Docker on a Raspberry Pi — small image, simple deployment, no build toolchain for contributors to wrestle with. The tradeoff made the UI cycle slower, but kept the ship small enough to actually run on the hardware hobbyists already own.

CultiVue logs view showing pH trend chart over time alongside recent log entries with pH, PPM, and water temperature readings
03

IoT ingestion that a hobbyist could actually wire up

Sensors only matter if people can connect them. Built a REST API with per-device API keys, rate limiting, and HMAC-signed webhooks for external integrations — enough security to trust on a home network, simple enough that an ESP32 project can POST a reading in a few lines of Arduino. The pH trend charts came free once the ingestion side worked.

CultiVue task management view showing active tasks with priority levels, due dates, recurring schedules, and garden associations CultiVue all plants view showing 20 plants across multiple gardens with growth stage badges and species names
04

PRD-first, AI-assisted iteration as the build loop

Every feature cycle followed the same pattern: sharpen the PRD, let Claude Code scaffold the implementation, test against real garden data, then refine. The first session produced the full API layer, database migrations, and routing. Later cycles added the OOBE setup wizard, admin management, audit logging, WCAG 2.1 AA pass, and the seed inventory with supplier and germination tracking — each landing in hours instead of days.

CultiVue seed inventory showing 8 seed varieties with suppliers, quantities, success rates, and germination times

The Payoff

A full-stack garden platform shipped in three months.

In three months, CultiVue went from a three-day Flutter prototype to a Node.js + SQLite web app supporting 15+ garden types, IoT sensor ingestion, multi-user auth with admin management, audit logging, WCAG 2.1 AA accessibility, and a one-command Docker deploy. The AI-assisted, PRD-first loop made the scope tractable for a solo builder without sacrificing the parts that matter on self-hosted hardware.

15+

Garden types supported

Zero

Frontend dependencies

Docker

One-command deploy

Looking Back

The scope wasn't the risk — pretending it was smaller than it was would have been.

HydroMate was the right first step because it proved the core loop was worth something, but the feedback that pushed it toward a full platform was the real signal. Trusting the PRD-first, AI-assisted workflow let the scope grow without the timeline exploding — and kept the thing honest as a self-hosted tool instead of drifting into yet another SaaS.

Back to All Projects