COVID-19 ERP is a project built by a team of seventeen developers for the Ghaziabad district in the state of Uttar Pradesh, India. To manage the resources allocated by the Government of Uttar Pradesh, they had asked us to come up with an efficient solution for the Ghaziabad district. In three months, a team of developers and designers shipped this app anew and received a scholarship of about Rs 1 lakhs.
Amidst the COVID-19 pandemic, when the rate of infected patients soared, the government departments and its entire machinery struggled to restore normalcy. An efficient software solution became the need of the hour to serve better control, monitoring and optimal utilisation of resources.
Our initial goal was a combination of web and mobile apps that could integrate the functioning of all the stakeholders involved in the covid management system. The app concerned itself with including patients, their attendants, doctors, hospitals, ambulances, and patients’ caring process with a facility to monitor the entire system by the competent authorities.
We operated on the app to deliver several functions like
- entering or uploading of newly diagnosed COVID-19 infected patient information
- entering or uploading of deputed doctor’s information
- entering or uploading an ambulance’s information
- entering or uploading the hospital’s information
- online examining of patients by doctors through the mobile app
- recommending /allocating of hospitals (L1/L2/L3) to the examined patients
- monitoring and allocating of an ambulance to the patient
- assigning a bed in the allotted hospital to the patient
- periodic updating of the patient’s status to their relative via SMS and emails
- generating a variety of reports for better monitoring and decision-making
Tech Stack Explanation and My Role
We developed three apps - an admin operations website, doctor’s mobile app, and a mobile app to display reports and statistics. For the full-stack web app, we used the MERN stack with additional tools (Redis, socket-io, Cloudinary and Sentry).
Using Kotlin and Flutter respectively, we designed two mobile apps.
We created five subunits, each having its leader, and out of which two managed the web app, two for mobile apps and the last one for the UI/UX design.
My role in this project was to progress the system design and architecture for the entire app. I supervised and remained responsible for all the above teams, heavily teaming up with the backend group.
Problems and Thought Process
One of the crucial problems that our backend team faced was using web sockets with Node js worker module. Node.js is single-threaded, and to scale our application, we had to use the worker module to run a node process on every CPU core. Its problem is that they don’t share memory and are stateless. Let’s say we have four cores and are running four different node.js processes. This causes a problem when two users A and B create a socket connection in two separate processes. When user A emits a message, user B would not understand, because it is not listening in on that process’s socket instance.
Upon multiple discussions, we used a central Redis database, collecting all emitted messages from a process and then emitting them back to all the other processes. It is a kind of hack we devised. However, we weren’t quite certain whether it was the proper implementation. Let me know if you have a unique solution, or if you have faced this issue.
Our application automated the allocation of patients' ambulances to carry them from their homes to their allotted hospital. Meanwhile, we considered building its tracking system. At first, this feature seemed interesting but was quite tricky to execute within the project timeline. Still, we gave it a shot and used free map APIs to build a slightly inaccurate tracking system. Although we never shipped it, it was a pleasant feature to work on.
I could talk all day about the lessons I learned. But the most relevant ones involved my newfound understanding of API architecture, system design, and real-time communication. COVID-19 ERP was my first large-scale project concerning technologies that a mid-level tech startup would use. Working with a wide team on such a project and managing them gave me an unforgettable experience. And as a developer, it improved my code quality and readability score to immense amounts.
We are thinking of providing this software as a solution to different organisations in the health sector who are facing problems to handle their resources. In terms of features, we are fairly stable. And we shall strive to maintain the platform as it is. Though, we can work on the mobile responsiveness of the website.
Since it is quite an extensive project to show, I can’t go through all the features. But you can read the official project report. The demo web app is hosted on my Vercel account. Use the master admin credentials given below to capture the performance of the platform.
- Type: Admin
- Username: firstname.lastname@example.org
- Password: 000000
(Further accounts can be made using the master admin credentials. The password for every account is similar to the master admin)