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.

- 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
- 01
Devices with limited connectivity
The app had to work with units whose network access was restricted or unstable.
- 02
A legacy MVP not built for extension
New functions had to fit into an MVP codebase that was not designed for later enhancements.
- 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
- 01
Bluetooth setup and control
Connect to and control ILCU units directly from the phone.
- 02
OTA firmware updates over Bluetooth
Deliver firmware updates to units from the app.
- 03
Device management
Configure, rename and remove devices and update their settings.
- 04
Logs and notifications
Refined activity logs, in-app and push notifications, and low-water-level alerts.
- 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

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.