After extensive years of experience in the law enforcement field, our clients came up with a vision to change how threats are perceived which can determine how they can be handled. After witnessing various high risk situations, the founders of the company are on a mission to save lives through an active threat response system which can create proactive response plans by harnessing the latest technologies. The founder and CEO of the company who had witnessed various high-risk situations throughout his career which gave him the expertise and the experience necessary to change how public safety is perceived.
After a previously successful run with us, our partners decided we were the right people to take on the responsibility of handling the design and development of the project. The client was very clear with the requirements and they wanted us to develop a critical event response application.
After setting the requirements in place, we started on the designs first and later on, we started with the development of the mobile application. As per the needs that the project demanded, we decided that the method of engagement for the project was to be based on the Time and Material model. The partnership which commenced seven months ago is still ongoing with new functionalities being implemented to improve the product.
After discussing with the client, we put together a team of five who would take the project forward. The team consisted of two Frontend developers who would each handle the mobile and web versions and a Backend developer spearheaded by a Team Lead to oversee the progress on the project. An account manager was additionally roped to handle all interactions with the client and ensure that the development was flowing smoothly.
The client wanted us to develop a real-time active threat management system.
The app was to connect law enforcement and medical responders with citizens instantaneously during a crisis.
The goal was to develop mobile and iPad apps for end-users along with a web version for admin use.
The crisis management tool was designed to automate key tasks by providing first responders with a live overview of the entire event.
The idea was to create an app to respond to crisis situations and once the requirements were set in place and the team finally introduced to the client, it was time to get cracking. Primarily, the technologies for the project were finalised along with the designs for both the mobile and web versions of the app.
The client wanted to use Flutter for the mobile version because of its cross-platform functionalities and its out of the box compatibility. Even though Flutter was the desired tech stack of choice, our developers suggested that we go forward with React for its higher efficiency in handling dependencies and the excellent cross-platform support that it offers. The client has also thought of using the Aqueduct Framework built using DART as the backend but due to few setbacks, like implementing the map function and its overall compatibility, we decided to go with Python instead. Python and Django frameworks also provide good support for geo-JSON data formats along with sockets and admin dashboard making it the apt choice.
We initially started the development work for the mobile version of the application that has in total three workflows to give the app a truly holistic and well-rounded experience to take on all aspects of risk management. The workflow for the mobile app was to integrate the following phases:
Student Flow: In the student flow, the user can create an incident and provide the details in reports which would contain information about the suspects and potential injuries. The intended user base was to consist of students, teachers and staff wherein the victims can mobile which followed a two-step process to create the event: the suspect report where the user can sketch the suspect using the app and the injury report which basically tells the injured person location.
Police flow: Generally, this is bifurcated based on the locations of any event that is triggered. Using this functionality and the suspect description given by the student an automated call is sent to the frontline. This information will be created in the form of an event and legal enforcement can easily access the location using this data.
Medical Flow: The medical flow is divided based on the locations; if any event is triggered based on the report given by the user, this information will reach the EMS team in an automated fashion and they can choose to join any event without any approval and save the victim.
Once the work on the mobile application was done, the next step was to create a web app for admin usage. The web app was designed to be used by admins to gather organisational information like name, users, description, geo-fence, perimeter points, command post, user information and along with an added functionality to manage the CRUD operations of data. The team needed to refactor in a major part of the code which was handled via the help of Redis and Pub/Sub was integrated to handle real time updates along with an option for multiple event workflows. An opps centre was also implemented and we are currently working on a feature to implement live-location tracking to streamline the process of connecting victims to frontline workers.
In order to make the product more robust and stable, the team followed the Test Driven Development approach wherein developers would write unit test cases along with their respective integration test cases. Once the automation testing was completed, the derived test results would include code coverage, number of test cases passed/failed, duration etc which are then pushed to Slack via a webhook for the team to view,analyze and fix the issue accordingly. Automation testing pipelines for the web version were added to Azure using Cypress so that test cases are run before code is merged and built whereas the team used the Firebase test lab to conduct automation testing for the mobile app along with an Azure pipeline to test the Backend.
Overcoming hurdles is an important part of effective project management and our team rose to the occasion by navigating through any speed bumps that came their way. A major challenge that was faced was in setting up AppCenter for producing builds and other DevOps operations. The team had decided to use Azure but since they were new to the framework, they had to conduct extensive research to get the app up and running. Since we were using Azure services for development(i.e Pub/Sub), it made more sense for the client to use the Microsoft ecosystem for end-to-end production development and deployment. One of the major challenges faced during the deployment of AppCenter is because it has a short live authentication token which breaks the connectivity with Apple App store frequently. There was trouble setting up Pub/Sub services as there is limited documentation and it is also very unstable. The team who did not receive the required help from Microsoft, resorted to moving the state from Azure Gov to Azure global while also implementing Redis which they had to build from scratch.
- The TDD approach was adopted for testing.
- The app was integrated with a Pub/Sub setup to handle real-time updates.
- Automation testing was conducted for the web version using Cypress.
It was our previously successful engagement with the client that brought them to our doors again, and the team were determined to give it their best shot to create a perfect product. The client is quite happy with how the progress on the project is coming along and has commended the team on their ability to meet deadlines on time and how they had handled any challenges that came their way during the development process. We are excited for the launch of the product which is set to be later this year.