We saved the executives of an exterminator company dozens of hours per week. Here's how!
The Problem
As an exterminator company in Germany, you need to create reports for the insurance companies. At the core, it contains some fields, like details of the billing person, the location of the affected person, etc.
Creating such reports wastes a lot of precious time when done with MS Word templates.
Furthermore, they can't be collaborated on and there is no single source of truth for the entire company.
To streamline the process, we agreed to develop a mobile application to make the process as simple as possible. We started getting our hands dirty the same day.
But who's Martin?!
Martin is an old-school friend of mine. His customer is the CEO of the exterminator company. He was more or less the middle-man in this process.
The development process
1. Requirements
Besides creating the PDF report, there were the following requirements.
Build it fast and "keep doors open for an Android version"
"Take care of everything" (Development, testing, submitting to the App Store and take care of updating)
Build modular, because "We might want an iPad version later"
Build it inexpensive - "We want to see if it helps us before doubling down"
Tech stack based on the requirements
We chose React Native, to
make it run on multiple platforms while
maintaining fast development and therefore inexpensive prototyping.
We chose Material UI (React Native Paper) to keep up with development speed and the budget.
Automated deployments were achieved with the help of Expo Go, to shorten feedback loops and reduce potential error causes.
We furthermore reduced development and especially maintenance costs by sticking to a Backend as a Service - Appwrite.
2. Finding and removing risk
The development team then assessed if there was any obvious risk that needed to be spiked.
In this case, there was one: We were provided with the template PDF and he wanted to make it look (at least nearly) the same.
That's why the first lines of code were the proof of concept for the PDF generation. It worked out great and we could communicate the final budget and started prototyping the UI.
3. Prototype the user interface
After removing the risk we chose a UX first approach. Without even thinking about one line of API (AppWrite) code, we fully finished the UI with the customers' "ok".
This was the final result.
In this process, however, domain objects (Customer, Report, ReportField, BillingDetails, etc.) were discovered and modeled. Furthermore, API interfaces for this core
package were built in this stage.
The cool part about this approach
The data access layer is loosely coupled with the UI. That means we could not only build the UI without a real backend by creating dummy repositories.
This also means we can switch out the data access with any provider at any time. By just creating a new package that implements the interfaces.
Once the fundamental UX flows got accepted by the client we moved on to implementing the AppWrite (Backend as a Service) adapter.
4. Implementing the logic
The AppWrite package joined the stage. In less than one hour all the interfaces were implemented and the app was now persisting its' data.
Without the risk of breaking the UI by changing anything in this specific package. The removal of this risk might seem small, but it also means:
no angry customer when something broke that worked earlier
no resulting meeting to showcase the issue
and no time wasted to inspect the issue further.
5. Final test of the prototype
The release came closer and closer. The last step was represented by a final meeting to check if everything was fine with this version.
Some issues were noted down then noted done and released to Testflight. After that was checked by the customer, we released it to the AppStore and the App went live.
Customer Review
"Working with RoyalZSoftware was great. The delivery was on point and unbelievably fast." - Martin Georg.
The customer was very pleased with the final result and happy that we saved him several hours per week.
Interested?
See what RoyalZSoftware can do for you, by reaching out to us! getintouch@royalzsoftware.de.