IoT Platform & Agritech Architecture
A self-hosted command center for growers who run more than one kind of garden.
CultiVue is a general-purpose agricultural management platform for growers who juggle hydroponics, soil raised beds, container gardens, and aquaponics side by side. Engineered with zero external runtime build tools, it deploys as a lightweight single-container Docker service with hardware sensor ingestion, multi-user authentication, and complete data ownership.
Role & Scope
Systems Architect
Polymorphic DB schema, zero-build edge SPA, ESP32 REST API, Docker
Scale
15+ System Types
Hydroponic, soil, container, and aquaponics with adaptive metrics
Core Bet
Zero-Build Edge UX
Vanilla JS + CSS custom properties runnable on low-power Raspberry Pi
Impact
100% Sovereign
Single-container deploy, persistent SQLite volume, zero cloud subscription
One platform for every growing method in the backyard.
Most gardening software forces growers into a narrow silo — either strictly hydroponic PPM calculators or basic soil journaling. CultiVue treats 15+ garden types as first-class citizens, adapting telemetry cards and metric fields dynamically so growers stop juggling three disparate apps to manage one backyard.
Private telemetry that never touches external servers.
Self-hosted by design. Docker + SQLite (better-sqlite3) means growers own their database, sensor logs, and audit trails. No subscriptions, no cloud dependencies, and no risk of a commercial vendor sunsetting the platform tomorrow.
The Multi-System Growing Challenge
Serious growers don't run one kind of garden — they run all of them.
CultiVue originated as HydroMate — a focused Flutter mobile prototype engineered in 72 hours for hydroponic nutrient monitoring, adapting an earlier inventory architecture. It worked well in bench testing, but field feedback revealed a fundamental disconnect: the same growers monitoring DWC (Deep Water Culture) and NFT (Nutrient Film Technique) reservoirs also maintained soil raised beds, container herbs on the patio, and indoor seed starting trays.
A narrow single-modality mobile application couldn't accommodate that operational scope. Serious growers were stitching together spreadsheets, paper notebooks, and proprietary IoT apps to manage one coherent backyard. Worse, none of the available software let them retain their raw data or integrate low-cost hardware sensors directly.
Gardens directory showcasing polymorphic system types, location tags, and real-time sensor metrics.
Strategic Trade-Offs: The Forks in the Road
Edge computing constraints, schema polymorphism, and UI runtime overhead.
Designing software intended for edge home servers (Raspberry Pi, low-power NUCs, NAS units) requires relentless architectural discipline. We evaluated and rejected two conventional software architecture paths.
Heavy SPA Framework & Complex Build Toolchain
The Premise: Build with a standard React/Next.js/Tailwind stack with SSR and client-side hydration.
Why It Failed: Crushing memory footprint on edge devices. When deploying to a Raspberry Pi 4 already managing local Docker daemons, a heavy Node runtime and huge client JavaScript bundles cause high latency and thermal throttling in humid greenhouse environments.
Loose Schemaless Document Store
The Premise: Store all sensor telemetry and garden configurations as arbitrary JSON blobs in a NoSQL document database.
Why It Failed: Broken time-series queries and lack of referential integrity. Aggregating rolling pH averages, detecting low-water threshold breaches, and tracking plant growth stages across multiple locations requires strict foreign key relationships and indexable columnar data.
Polymorphic Relational Schema with Zero-Dependency Edge SPA
I architected a strongly-typed relational model in SQLite (better-sqlite3) where each garden type specifies its own valid metric definitions and threshold ranges. The frontend was engineered in pure vanilla JavaScript and CSS custom properties (~3800 LOC SPA) with zero external compilation dependencies. It includes a native theme engine (light/dark + 6 WCAG AA accent palettes), responsive bottom-sheet navigation for mobile devices, and Chart.js for hardware telemetry visualization. The entire platform runs comfortably on under 128MB of RAM.
Full-Stack Systems Delivery
Four architectural milestones from mobile prototype to IoT command center.
Polymorphic Schema Architecture: Supporting 15+ agricultural modalities in SQLite
The central architectural challenge was representing disparate agricultural modalities (DWC, NFT, Kratky, Ebb & Flow, Raised Beds, In-Ground, Containers, Aquaponics, and Microgreens) without schema bloat. I structured dynamic metric entities linked to garden types: hydroponic systems dynamically load pH, PPM, and water temperature inputs, while soil gardens surface moisture percentages and organic amendments, all operating over normalized tables.
Zero-Dependency Edge UX: Native mobile ergonomics & WCAG 2.1 AA accessibility
Engineered a custom vanilla JS SPA shell with hash routing (navigateTo()). On desktop (>1024px), it provides a full 240px sidebar with 4-column telemetry grids. On mobile (<=768px), it shifts to an app-like bottom navigation bar with MD3 pill indicators, safe-area inset compensation (env(safe-area-inset-bottom)), full-width slide-out drawers, and bottom sheets. Implemented strict WCAG 2.1 AA compliance including focus trapping, keyboard navigation, and high-contrast colorways.
Hardware Telemetry Pipeline: REST endpoints & HMAC webhooks for ESP32 devices
Sensors are useless without reliable, low-overhead connectivity. Built a dedicated REST endpoint (POST /api/sensor/readings) with per-device API key authentication and rate limiting (100 req/min per key), allowing microcontrollers like ESP32 or Arduino to push readings in a few lines of C++. Added an outbound webhook dispatcher with HMAC signature verification to trigger automated relays or home automation events when sensor thresholds are breached.
Botanical Lifecycle Management: Seed inventory, stages, and planting calendar
Expanded the platform from environmental monitoring into complete crop lifecycle tracking. Built a seed inventory module tracking suppliers, packet dates, quantities, and germination success rates. Integrated the external Perenual botanical API to power a seasonal planting calendar that calculates custom sowing and harvest windows based on localized frost dates.
Agritech Platform Impact
A production edge operating system shipped in three months.
CultiVue evolved from a 3-day Flutter spike into a robust, self-hosted Node.js + SQLite web platform orchestrating 15+ garden types, hardware telemetry, multi-user role permissions, audit logging, and automated webhooks. By adhering to a strict PRD-first cadence, the entire system runs self-sufficiently without external SaaS fees or cloud lock-in.
Polymorphic Garden Models
Zero-Build Edge JavaScript
RAM on Raspberry Pi 4
Keyboard & A11y Verified
Self-Hosted Architecture Takeaway
Throwaway spikes clarify the real architectural boundary.
The original HydroMate mobile app in Flutter was valuable precisely because it was disposable: it proved the telemetry loop worked while immediately exposing that confining a user to a single modality was artificial. Embracing that feedback and rebuilding the platform on a polymorphic foundation allowed CultiVue to scale without structural regret.
Designing for edge computing and self-hosted environments enforces a powerful empathy: when your software runs on a user's own hardware, bloat is visceral. Eliminating dependencies and prioritizing keyboard navigation and solid state contracts isn't retro—it is the highest form of respect for the user's computing resources.