Workplace plant installations / Device control app

Cross-platform app and backend for irrigation and lighting control unitsMobile, backend and cloud engineering on an existing MVP

Adding Bluetooth setup and OTA updates to an indoor plant-care control app

Greenery NYC designs, installs and maintains plant installations for offices and other workplaces. Its plants are supported by Irrigation and Lighting Control Units (ILCUs): low-energy devices with a configurable number of pumps and lighting features. An app lets users set up the units, schedule irrigation and lighting, control them manually and receive status notifications.

Greenery NYC asked for updates to its existing app: Bluetooth for easier device setup and firmware updates, customizable device settings, better activity logs and in-app notifications. Some units had limited or unstable network connectivity, which made Wi-Fi-only control unreliable.

Phone showing the app's device list with unit names, water-tank, light and cloud-mode status, next to a white planter with herbs under a light bar.
The Greenery NYC app's device list beside a planter with an integrated light bar.
Product
Cross-platform app and backend for irrigation and lighting control units
Buyer
Product teams extending an MVP app that controls connected devices with unreliable connectivity
Engagement
Mobile, backend and cloud engineering on an existing MVP
Indeema scope
Discovery, Requirements and specification, Mobile app, Backend and cloud

The product need

What had to become possible

Greenery NYC asked for updates to its existing app: Bluetooth for easier device setup and firmware updates, customizable device settings, better activity logs and in-app notifications. Some units had limited or unstable network connectivity, which made Wi-Fi-only control unreliable.

Ownership, made clear

Where the work started and what Indeema owned

Starting system

ILCU devices and firmware

Irrigation and lighting control units whose firmware was managed by Greenery NYC's own team.

Flutter MVP app

An iOS and Android app with schedules, activity logs, manual control, device groups, notifications about device status and water levels, cross-device sync and account registration.

Backend

A Django back end with an admin panel for business owners, running on AWS.

Indeema owned

Discovery

Review the existing code and legacy systems and work with the client's team to find and resolve firmware issues that affected the app.

Requirements and specification

Refine the client's designs and turn the requirements into technical specifications.

Mobile app

Upgrade the Flutter app and add Bluetooth connection and control, OTA firmware updates over Bluetooth, device configuration, removal and renaming, activity logs and notifications.

Backend and cloud

Work on the Django back end and admin panel, the AWS setup and GitHub Actions automation, and provide ongoing maintenance.

Worked with

Bluetooth to ILCU devices

The app connects to units directly for setup, control and firmware updates.

Cloud to ILCU devices

Units in cloud mode report status and activity through the AWS back end.

Admin panel

Business owners use the Django admin to monitor the system and address operational issues.

Product constraints

What made the engineering difficult

  1. 01

    Devices with limited connectivity

    The app had to work with units whose network access was restricted or unstable.

  2. 02

    A legacy MVP not built for extension

    New functions had to fit into an MVP codebase that was not designed for later enhancements.

  3. 03

    Firmware owned by another team

    App features such as OTA updates depended on firmware managed by the client's team.

Engineering judgement

Decisions that shaped the product

Add a Bluetooth path

Bluetooth gives the app a direct connection for setup, control and firmware updates when a unit's network connection is unreliable.

Extend the MVP, plan the rewrite later

A full rewrite was judged unnecessary at the MVP stage. The team extended the existing system and planned a later overhaul based on user feedback and budget.

Firmware updates through the app

Firmware updates are delivered from the app over Bluetooth, so units can be updated during a service visit.

Delivered product capability

What the product can do

  1. 01

    Bluetooth setup and control

    Connect to and control ILCU units directly from the phone.

  2. 02

    OTA firmware updates over Bluetooth

    Deliver firmware updates to units from the app.

  3. 03

    Device management

    Configure, rename and remove devices and update their settings.

  4. 04

    Logs and notifications

    Refined activity logs, in-app and push notifications, and low-water-level alerts.

  5. 05

    Maintained back end

    Ongoing updates to the Django back end and AWS setup, with GitHub Actions automation.

Product change

What changed for the product team

The app moved from Wi-Fi-only control to a combination of cloud and direct Bluetooth connection, with firmware updates, device configuration and alerts handled from the phone. The MVP codebase was extended rather than replaced.

For a team with an MVP device app that has to cope with unreliable connectivity, this case shows how a Bluetooth path, app-based firmware updates and incremental changes to legacy code can extend a product without a rewrite.

  • The app can set up, control and update ILCU units over Bluetooth as well as through the cloud.

Product evidence

A closer look at the product

Diagram of the phone app connected to two stacked plant devices via Wi-Fi through a cloud and directly via Bluetooth, with water and light icons.
The app reaches irrigation and lighting units through the cloud over Wi-Fi or directly over Bluetooth.

Technology, in context

Flutter · Dart · Bluetooth Low Energy · Python · Django · AWS · GitHub Actions

A comparable product problem?

Greenery NYC plant-care control app

Bring the product context, the system that already exists and the engineering decision you need to make.

Discuss a comparable challenge