All projects
Web / Backend / Mobile / IoT / Tests

FloraCue

FloraCue connects three custom ESP32 modules with an API, database, web portal and mobile application. It records measurements, builds a history, generates alerts and supports manual, scheduled and automatic watering.

Home FloraCue setup with three plants, serial watering, sensors and the application open on a laptop and phone

An integrated crop monitoring and automated watering system connecting applications with ESP32 devices.

Delivered scope

  • ASP.NET Core API, PostgreSQL and domain model for users, organizations and devices
  • React web portal, administration intranet and React Native mobile application
  • Three ESP32 modules for watering, soil and light measurements, and air conditions

Concrete outcomes

  • A working data path from a physical sensor to the user interface
  • Shared access rules and business logic across web and mobile clients
  • An architecture that lets firmware, backend and applications evolve independently

Problem

In both home and professional cultivation, conditions are often checked manually and only at intervals, while readings from separate sensors do not form a consistent history. This makes trend analysis difficult and delays reactions to abnormal soil moisture, temperature, air humidity or light levels.

Solution

The system connects three ESP32 modules with an ASP.NET Core API, PostgreSQL database, React portal and React Native application. Devices periodically upload measurements and fetch commands, while the backend stores their history, compares readings with species thresholds, creates alerts and can start watering. Users manage plants, zones, sensors, valves and schedules from the web or mobile application.

  • TenantId-based isolation for organization and user data.
  • Alerts for temperature, humidity, light and device state.
  • Manual, scheduled and automatic watering.
  • Sequential valve control with a local 120-second safety limit per valve.
  • Administration intranet, announcements and static portal content editing.
  • Shared TypeScript logic across web and mobile clients.
  • xUnit tests for the API, Vitest and Testing Library for web, and Jest for the mobile application.

Key decisions

Business rules and access control stay in the API, which returns section-level permissions to clients. This keeps the web portal and mobile app consistent while allowing them to expose different interface scopes.

The device layer uses dedicated hardware identifiers and secrets. Measurements trigger domain events that drive alerts and watering decisions.

Result

The project demonstrates an end-to-end path from a physical sensor through the API and PostgreSQL database to the user interface. Its architecture lets the web, mobile and firmware layers evolve independently without duplicating core rules.

Demo

FloraCue in action

A short demonstration of the web portal, mobile application and physical setup with sensors and irrigation control.

Collaboration

Working on a similar technical problem?

Let us discuss an application, integration, automation workflow or device prototype.

Next projectYour Meter