A company specializing in irrigation-control systems for parks, stadiums, amusement parks, and other large-scale sites needed to evolve its primary solution from monolithic desktop applications and legacy services into a modern architecture connecting web experiences, cloud services, and hardware installed at each location.
One of our developers worked within the client’s team as the Lead Designer and Solution Architect for the primary platform. The contribution covered architecture, legacy modernization, frontend and backend development, data migration, Azure integration, and real-time IoT communications.
The implemented scope focused on irrigation management for landscaped environments and large facilities. The platform connected operators with controllers, devices, and distributed services across multiple locations.
| Area | Description |
|---|---|
| Industry | Smart irrigation for parks, stadiums, amusement parks, and other large landscaped sites |
| Product type | Enterprise platform connected to irrigation controllers and hardware installed across multiple locations |
| Contribution | Technical-design leadership, solution architecture, and full-stack, cloud, and IoT implementation |
| Modernization | Monolithic applications and legacy services into cloud-ready, service-oriented applications |
| Data | Migration from a legacy ADS database to PostgreSQL |
| Communications | REST, streaming gRPC, and MQTT messaging through HiveMQ |
| Edge and IoT | .NET 6 on single-board computers, including Raspberry Pi, integrated with Azure IoT technologies |
| Priorities | Gradual migration, maintainability, interoperability, scalability, and real-time communication |
The platform could not be modernized by treating the frontend, services, database, cloud environment, and hardware as independent initiatives. Each layer depended on the others while coexisting with technology already supporting irrigation operations across large sites.
The primary challenges included:
The work began by analyzing the dependencies, responsibilities, and integration points of the primary solution. One of our developers helped define the target architecture, service boundaries, and patterns required to modernize the platform progressively rather than depend on a high-risk, all-at-once replacement.
The architecture separated responsibilities, reduced coupling, and allowed web applications, cloud services, and devices installed at each location to evolve with greater independence.
Several monolithic desktop applications were redesigned as service-oriented applications. This transition moved specific responsibilities into independent components, established clearer contracts, and prepared the platform to operate with Azure technologies.
The objective was not merely to change languages or infrastructure. It was to improve how the system was organized, deployed, and connected.
The data-modernization effort included transitioning from a legacy ADS database to PostgreSQL. The work had to account for existing structures, compatibility with the new services, and a migration strategy that reduced risk as the platform evolved.
PostgreSQL provided a modern, broadly supported data foundation for the restructured services and future cloud workflows.
IoT components were developed with .NET 6 and deployed to single-board computers, including Raspberry Pi. These components formed part of the connection between irrigation controllers installed on-site and the platform’s services.
The solution also moved toward Azure IoT technologies, connecting local processing with cloud capabilities while keeping responsibilities clear across edge devices, services, and client applications.
To support development and validation without requiring constant access to physical hardware, a server/client system for simulating devices and controllers was implemented in .NET.
Communication used gRPC and streaming messages, enabling continuous, low-latency exchanges that represented hardware behavior in real time. The simulator made it possible to test integrations, states, and platform responses in controlled environments.
Several web-service integrations were restructured around MQTT messaging, using HiveMQ as the broker. The change reduced direct dependencies between producers and consumers and enabled device and service events to be handled asynchronously.
This model was better suited to a distributed IoT platform in which controllers, services, and applications need to publish and consume information without maintaining a rigid point-to-point connection between every system.
The Angular experience, initially designed around mobility, continued evolving into a broader enterprise interface. Angular, TypeScript, and SCSS were used to create reusable components, consistent patterns, clear state handling, and REST-service integration for presenting irrigation operations through usable workflows.
The frontend architecture was aligned with the backend modernization so that the web experience would not become a new monolithic layer.
| Area | Technologies and practices |
|---|---|
| Web experience | Angular, TypeScript, HTML5, SCSS, and responsive design |
| Services | .NET 6, REST APIs, and service-oriented applications |
| Cloud and IoT | Microsoft Azure, Azure IoT, and edge computing |
| Hardware | Single-board computers, Raspberry Pi, and site-installed irrigation controllers |
| Data | PostgreSQL, legacy ADS database, and data migration |
| Real-time communication | gRPC and streaming messages |
| Messaging | MQTT and HiveMQ Broker |
| Engineering | Design patterns, separation of concerns, Git, code review, and iterative delivery |
The modernization established a more flexible foundation for a hardware-connected irrigation solution to continue evolving without depending on a single monolithic application.
No percentage improvements or performance metrics are published because no approved measurements are available for disclosure.
Modernizing a hardware-connected irrigation platform operating across parks, stadiums, amusement parks, and other large-scale sites is more complex than migrating an interface or upgrading a framework version. It requires coordination across client applications, services, databases, messaging, cloud infrastructure, controllers, and deployment processes while existing operations continue.
This story demonstrates our team’s ability to contribute architectural leadership across multiple layers—from Angular and .NET to PostgreSQL, Azure IoT, Raspberry Pi, gRPC, and MQTT.
To protect confidentiality, product names, internal diagrams, device models, and client operational details are not included.
We can help define a transition architecture, separate monolithic applications, migrate data, connect IoT devices, and build cloud services without requiring a complete rewrite on day one.