Given the urgency of the current situation, no amount of help is enough. That is why we have designed and programmed the basic core of a project with 100% functional apps that can respond to some citizens’ needs during the quarantine period.
The main idea of our application is based on a system known as “self-quarantine safety protection”, developed by the Ministry of the Interior and Safety of South Korea, that allows those who have been quarantined to stay in touch with caseworkers. It also uses GPS to keep track of their location to make sure they are not breaking their quarantine, MIT Technology Review reports.
We do not intend to publish this APP, since it must be the relevant Ministry or body that does so. We know that the governments are investing in applications like this one](https://www.smartcitiesworld.net/news/news/south-korea-to-step-up-online-coronavirus-tracking-5109) however since speed is key, we are making this code available to the relevant bodies in the event it may be of use.
The design is flexible enough to add or change functionalities in an easy and fast way, which is what we need now. This application aims to help citizens and fight the pandemic. Be responsible. Together, we will defeat the virus!
What it does
The availability of an effective vaccine may be delayed indefinitely for up to possibly 18 months. This requires quarantine measures - currently of a general nature - for the entire population. At the same time, health authorities are contemplating performing diagnostic tests at the population level, to ensure proper epidemiological control. The Open Coronavirus project offers, for this time interval, a digital solution for monitoring, diagnosing and containing SARS-CoV-2 infection that allows quarantine measures to be applied in a controlled manner at focal points or hotspots, thus minimizing the general quarantine of the population, reducing the overload of health systems, and at the same time facilitating the progressive resumption of daily activity in the shortest possible time. The system will have 3 applications:
- Citizen App. Mobile application for citizen collaboration and to control the spread of SARS-CoV-2. From the application a diagnostic test will be requested, and the results of the test can be seen.All citizen movements will be stored to control possible infection and to delimit the scope of action of SARS-CoV-2 by the health authorities. It will serve as QR-code based citizen identification.
- Data control software where health and epidemiological control authorities will be able to consult and detect the movements of SARS-CoV-2. From the software, they will be able to see focal points of infection, compliance of mandatory quarantine for those infected or potentially infected.
- Authorities’ App. Mobile application that enables relevant authorities to read citizens’ QR identification codes in the locations where they have decided to monitor their movements in this way.
How we built it
The project is built on top of an horizontal architecture of node servers running on dockers and being balanced against a mongoDB database. The design allow to replace the database by whatever data storage system since repositories (classes in charge of communication with the data store) are isolated from the rest of the code. The framework used is Loopback 4, which allow to define models, controllers, repositories and datasources completely decoupled.
Apart from that, we know that this application should be integrated with different health department databases, so we have defined a few interfaces allowing easily to integrate them with real databases and APIs by just implementing those interfaces.
The project is organized as follows:
server- NODE server (Loopback)
app-citizen- Code of the CitizenApp (Ionic)
dashboard- Code of the web dashboard where the data analysis will be performed (Angular) (coming soon)
app-police- Code of the Authorities’ App (Ionic) The app compiles for both Android and iOS.
To run the server, you need a mongoDB database and must adjust the .env.dev or .env.production settings accordingly. You will also need to download all dependencies using
cd server npm install
Finally, to run the server use
The App is made with the ionic framework. You will need to install the client using
npm install -g @ionic/cli
You will also need to download all dependencies using
cd app npm install
Then, to run it use
ionic serve --configuration=en
This allows you to run the app in a browser.
Challenges we ran into
The most bigger challenge we ran into was to design a general purpose solution inspired in South Korean one as well as to build a 100% functional app in a few days to check it out if the whole thing works and makes sense.
We know that some countries built similar apps which help to retain the virus propagation, so this was our goal: to create an open source one to help governments to accelerate their development efforts. Why each country (or even lot of administration within the same countries) need to develop its own app? This is the reason because we created Open Coronavirus, to unify efforts.
Accomplishments that we're proud of
We've developed a 100% functional app + server in an horizontal scalable architecture capable to support a big amount of users and data transfer in just 2 days. We think that this app can be really helpful for most of the countries right now because they need one solution like this one and this one is ready to be customised and integrated within their health department & citizen databases.
What we learned
We learned lot of stuff regarding COVID-19 and how other governments and administration has retained the epidemic as well as the kind of technologies, products and applications they used to.
What's next for Open Coronavirus
Our expectation is to help governments and administrations with our code and ideas to accelerate the development as well as the implantation of this kind of applications. This is the reason because we have opened the code.
Try It out
amazon-web-services, android, angular.js, app, docker, ecs, gps, ionic, ios, loopback, mongodb, node.js, rest, typescript