Modernizing a smart irrigation platform for large-scale sites
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.
Case overview
| 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 challenge
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:
- Transitioning from legacy technology to a modern stack using sound engineering practices and design patterns.
- Decomposing monolithic desktop applications into cloud-ready, service-oriented applications.
- Adopting Microsoft Azure technologies for enterprise services and IoT workflows.
- Migrating information from an ADS database to PostgreSQL.
- Running IoT components built with .NET 6 on single-board computers such as Raspberry Pi.
- Validating interactions with controllers and hardware when physical devices were not available in every environment.
- Enabling real-time communication among simulators, services, and clients.
- Replacing tightly coupled integrations across several web services with MQTT messaging.
- Maintaining a clear and scalable Angular experience for specialized multi-site irrigation-management workflows.
Our approach
Technical leadership and target architecture
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.
From monolithic applications to cloud services
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.
ADS-to-PostgreSQL data migration
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 and edge computing with .NET 6
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.
Hardware simulator with gRPC streaming
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.
MQTT messaging through HiveMQ
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.
Evolution of the Angular experience
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.
What we delivered
- Technical-design and architecture leadership for the primary smart-irrigation solution.
- Definition of a modern architecture based on sound engineering practices and design patterns.
- A gradual transition from legacy technology to a newer stack.
- Redesign of monolithic desktop applications as cloud-ready, service-oriented applications.
- Adoption and integration of Microsoft Azure and Azure IoT technologies.
- Database migration from ADS to PostgreSQL.
- IoT components built with .NET 6 for single-board computers, including Raspberry Pi.
- A server/client hardware simulator implemented in .NET.
- Real-time communication using gRPC and streaming messages.
- Conversion of several web-service integrations to MQTT messaging with HiveMQ as the broker.
- Architecture and implementation of an enterprise Angular experience.
- Integration across frontend applications, REST services, cloud components, and devices installed across multiple locations.
- Participation in technical decisions, code reviews, and collaboration across multidisciplinary teams.
Technology stack
| 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 |
Product value
The modernization established a more flexible foundation for a hardware-connected irrigation solution to continue evolving without depending on a single monolithic application.
- Architecture designed for growth: separated services can evolve with less coupling.
- Cloud and edge integration: responsibilities can be distributed between Azure and controllers installed at each location.
- Modernized data foundation: PostgreSQL provides stronger compatibility with current services and tooling.
- Validation without total hardware dependency: the gRPC simulator supports controlled testing scenarios.
- Decoupled IoT communication: MQTT and HiveMQ distribute events across multiple producers and consumers.
- Improved maintainability: design patterns and separated responsibilities reduce the complexity of future changes.
- Consistent enterprise experience: Angular presents specialized workflows for managing irrigation systems distributed across parks and large venues.
No percentage improvements or performance metrics are published because no approved measurements are available for disclosure.
Why this story matters
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.
Do you need to modernize an irrigation platform or hardware-connected software?
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.
