Modern UK construction sites have to go through a much stricter regulation process than ever before. One of those regulations set in place is that a construction site has to maintain a certain level of air quality around its perimeter. To track the level of dust/noise pollution at these construction sites, special monitors are carefully installed around the construction site perimeter.
Monitors come from different manufacturers, and each manufacturer has its own protocol for device communication. Monitored data is sampled at intervals preset as part of monitor settings, and displayed on dedicated monitor data portals hosted by the manufacturer.
This means that an assigned construction site regulator needs to keep track of different monitor manufacturers and access their sites on a daily basis in order to check if the site dust level thresholds have been breached and act quickly if a breach has been detected.
Imperial College London University staff contacted us to help them develop a dedicated monitor tracking system which would interact with different monitor manufacturer APIs in order to consolidate monitor data and alert regulators in case of a threshold breach.
To hasten the development process, Penzle framework assets were used as a foundation. This means that after finishing the environment setup step, we had already finished User, Role & Permission Management back-end capabilities, as well as Authorization & Authentication, which considerably speeded up the development cycle. After completing the setup, the only thing left was to develop the UI matching the client's approved design mockups.
The most important aspect of the system was naturally third-party API integration with different monitor manufacturers. For this we needed a complete list of manufacturers as well as access to their dedicated portals. Each manufacturer API had a dedicated service for data retrieval. After deeper investigation of API authentication process, we were in position to develop services capable of both token-based and credential-based authentication. Error handling was naturally handled separately for each API.
As the lowest monitor data retrieval interval was 15 minutes, we knew that we could be a bit more lax on system scheduling mechanism. While we could easily integrate with Azure using event scheduling, we opted for Hangfire for scheduling using SQL Storage. This way we were able to schedule data retrieval for each monitor at monitor specific intervals as well as proper failover handling ability to process failed/successful requests.
Depending on data retrieval frequency we were able to set monitor as offline if the API was not responding properly after controlled number of successive attempts.
Refinements and Finish
After dedicated testing of API integration with different manufacturers, all that was remaining was dashboard and reporting features. A part of the project requirements was sending scheduled email messages depending on specific events, and that aspect was easily implemented using previously developed Hangfire scheduling mechanism. Final touches included ensuring that proper web responsiveness criteria were met, and dedicated testing was done to ensure quality when interacting with the application using different devices (smart phones, tablets, different web browsers, etc.).
We successfully delivered the final application, but only after client had personally ensured the guaranteed quality using staging server we provided for his personal use, as well as demonstration to other parties of interest. Our approach during development was to leave the system open for possible extension post-MVP phase. This project also served as a proof of concept that Penzle framework can be successfully used as project foundation, achieving significant project speed-up in the first couple of sprint iterations.
This solution was completed by our partners at Tappable utilizing our Penzle framework as the foundation. If you want to become our partner, or have an example of how Penzle helped you build your idea, reach out to us with your story.