Homepage > Portfolio > Reporting Platform for the Local Municipal Government of Canada

Reporting Platform for the Local Municipal Government of Canada

Azati designed and developed a set of applications interconnected into one robust platform. The main goal of this solution was to collect information about equipment depreciation, and the secondary goal was to create interactive real-time reports according to the collected data.


From the very beginning, we did not work with the customer directly. All communications were made through our partner – a company focused on business automation and digital transformation. Our partner is software development agency in Toronto, so it was easy for them to communicate with the customer on-site. A customer wanted us to solve one day-to-day issue.

Every city relies on complex sewage treatment. These systems are cleaning out blackwater to avoid ecosystem pollution. Maintaining the whole process is a complicated, but essential task: if something goes wrong, it will end with complete disaster both for the government and for citizens.

Since industrial water treatment contains several steps, there is a considerable number of different equipment used during the process. So, it is challenging to maintain this equipment: one time per day, a group of engineers inspects every device to ensure that everything works fine.

And, well, the inspecting process requires reporting. The customer wanted us to automate the existing reporting process and make it in line with current highly technological reality.

Engineer writes a report for every water pump he checks. As there are hundreds of pumps involved in the whole treatment process, engineers are wasting almost half of their time by doing excessive paperwork. It is easy to calculate how much a single report costs.


After initial analysis, we figured out the best way to solve the problem – develop a custom questionnaire application. Engineers are familiar with the questions extracted from their daily reports. So, it does not require any additional personnel training.

In This Way, We Started Developing Several Applications:


Data-processing application

Let’s call it “Backend”. The main idea of this app was to collect information from mobile clients and store it in the database (CRUD functionality). Also, this app generates reports later used by the customer to understand the actual state of the equipment.


iOS and Android clients

Two client-side applications, which engineers use to complete polls. As these applications have the same functionality, our engineers decided to build it with a cross-platform framework–React Native. This approach helped us to cut down development and overall costs.

Yeah, this plan looks straightforward and easy to implement, but there were several tech-related challenges we faced. Let’s have a closer look.




Our business analysts figured out that the list of requirements gathered for tender preparation was incomplete. This prevented our team from developing a complete technical specification in the shortest terms.

Another issue was the lack of direct communications with the customer. Sometimes it was tricky to understand what the customer wants.

There was no way to avoid these issues, so our team relied on an effective agile methodology – SCRUM, instead of the traditional Waterfall. It helped us to avoid any delays on start and move faster, delivering MVPs once per week.



SCRUM led to some inconsistency in data and poll templates. It was a typical situation when the customer decided to change the look of a specific report or poll or even change one or two questions in the process. There was no strict standardization, as well as sometimes reports contained unstructured data like photos and images.

So, it became a typical situation when we already deployed an application, but some polls still require minor fixes and the whole app is not 100% usable.




Sometimes equipment was placed underground, where mobile network is not accessible – it makes the typical application unusable. Our engineers decided to develop an “offline mode”. The team never faced a similar functionality before, as it was a unique and important experience.

It is easy to trigger data synchronization when the application goes live, but this approach uncovers several unobvious issues. One day, it was a kind of crucial moment when the poll template changed in the process and cannot be synchronized with all the devices.


The development process contained four steps called milestones.

Presales: Our business analysts initialed research and analyzed the main requirements. As you already know, the list was incomplete from the very beginning. This way, our partner helped us to speed up requirements gathering.

The team proposed agile development to our partner and the customer. We wanted to develop a solution step by step rolling out a working prototype every week.

Our team often faces a situation when the customer does not know what he wants and how it should look like – it leads to misunderstanding and extra works. To avoid negative circumstances, we wireframe and mockup everything.

Wireframing: As we did not know what kind of application the customer wants to develop – our business analysts and a UX designer created user flow first. User flow is a way users interact with an application – what they see, what buttons can they click, what happens if they click on a specific button. Wireframes are widely used for such kinds of work.

But wireframes are outdated today, so we presented interactive wireframes made with Adobe Experience Design. Interactive wireframes help the customer understand how the application will look like and how it feels.

Agile Development: When we determined the design of an application, our team started the development process. From the very beginning, we’ve created a staging server – a test web server that contains the actual state of an application.

We are trying to avoid staging servers – someone can access the application and try to use it until it is ready. Here, our team did so to achieve maximum transparency and build relations based on trust.

So, the customer can check the project status and how the work is done.


The solution includes two applications connected to one robust ecosystem. There is an Android/iOS mobile app for auditors and web interface for admins.

Auditor mobile application
(iOS, Android) main features:

  • Form template selection
  • Filling the form functionality (with the possibility to navigate between sections)
  • Filled form preview functionality
  • Drafts, sent forms and in-process forms (finished and sent, but not delivered yet because of the lack of the Internet connection) functionality

Admin web-application
main features:

  • CRUD users functionality
  • CRUD forms template functionality (using the form-builder)
  • CRUD reports templates functionality
  • Automated email sending after the form receiving





We built custom reporting software that collects data from many mobile clients. Some mobile clients do not send information immediately, but from time to time synchronize with customer-hosted backend. One per day, application downloads the latest poll templates and enriches the existing answers with default values, if these answers miss some crucial fields.


freed from doing routine and monotonous paperwork
per day are processed by our solution
it took for our team to build this set of applications


Our team successfully launched the solution in mid-summer 2019. Azati signed up an on-premise maintenance contract with the customer. This project helped us understand how local government works and what problems it faces.

Drop us a line

If you are interested in the development of a custom solution — send us the message and we'll schedule a talk about it.