SmartFlow

2022
Role: Node.js Developer
Node.js NestJS TypeORM PostgreSQL RabbitMQ Angular

Monitoring platform for water distribution networks that integrates data from sensors and telemetry systems, enabling anomaly detection and fault localization for utility companies.


Overview

SmartFlow is a monitoring platform for water distribution networks, developed by Future Processing in collaboration with MPWiK Wrocław. The system integrates data from sensors and telemetry networks deployed across city water infrastructure. This data is stored in client-owned databases, with which SmartFlow periodically synchronizes to maintain an up-to-date view of the network state. The processed information is used to detect anomalies such as hidden leakages, pressure irregularities, and equipment failures. When an issue is identified, its location is displayed on an interactive map, enabling field teams to quickly locate and address problems.

Technical Details

Architecture

The platform is built on NestJS backend with PostgreSQL database and Angular frontend. It uses RabbitMQ for asynchronous communication between system components.

The system aggregates data from multiple device types installed throughout the water network:

Data Synchronization

A key aspect of the system is its approach to data acquisition:

  1. Client Databases - Sensor data and telemetry information are stored in databases owned and managed by each client utility
  2. Synchronization - SmartFlow periodically connects to client databases to pull the latest data, rather than receiving direct sensor feeds
  3. Processing - Services process synchronized data, perform calculations (e.g., Minimum Night Flow for DMA zones), and update the platform’s own database
  4. Presentation - Angular frontend renders interactive visualizations based on processed data

My Contributions

As a backend developer working on this project, I focused on several key areas:

Key Features

Lessons Learned

Working on SmartFlow taught me how to build systems that handle data synchronization from multiple external sources reliably. I gained practical experience with periodic batch processing patterns and learned how to design integrations that respect client data ownership and autonomy. The project also showed me how to balance technical decisions with domain-specific requirements from the water industry.