I was initially inspired by the map put up by Johns Hopkins that visualizes all of the Coronavirus cases that are in the world. I thought that this was a great way to make people aware of the huge spread of the disease, but it didn't cater to people on the individual level. It was only a view on the macro level, so I decided to build something similar that people could use in their own localities.
What it does
The Coronavirus Tracker's home screen is a Google Maps display of the whole world that contains pins and circles which represent Coronavirus cases. The app basically tracks the user's current location and sends a notification to them whenever they enter an area that has been reported to have a Coronavirus case. The app sends a notification if the user walks within a 1 kilometer radius of the reported incident. Even though social distancing and self-quarantine has encouraged across the globe, there are still people such as deliverymen who are still needed to travel outdoors in the time of this pandemic. Therefore, this app helps people like these by making them aware of what areas to avoid when travelling around cities and towns. It aims to reduce the anxiety of such essential people and vulnerable populations by giving them a sense of awareness of the environment they are moving in.
How I built it
I made a Python script that scrapes the Coronavirus case global information daily in a CSV format off of the github repo of Johns Hopkins Coronavirus Center (https://github.com/CSSEGISandData/COVID-19/blob/master/csse_covid_19_data/csse_covid_19_daily_reports/03-04-2020.csv) I then reformatted the CSV into JSON and pushed it to a Firebase Real Time Database via API calls. I used an API called Geofire which sends notifications whenever a user enters the radius of a certain location (latitude, longitude) using location data stored in Firebase. The app stores the user's current location in Firebase as well. I used the Google Maps and Utility library to represent the Coronavirus cases on the world map using heat maps and clusters. I coded the app with Java in Android Studio.
Challenges I ran into
There a few challenges I ran into. First of all the format in which the Johns Hopkins Coronavirus data was arranged in the CSV file was modified in the past 2 weeks, so I had to update my Python script accordingly. Also because there were so many Coronavirus cases in the data (over 3000+), the app would slow down immensely and even crash while trying to load all of these cases as pins on the map. I resolved by using Clusters which would group many cases together on the map based on zoom level, meaning the map wouldn't have to render all the pins at the same time.
Accomplishments that I'm proud of
I'm proud of the fact that I was able to implement this idea in a relatively short time. I only started with this idea 2 weeks ago when my college suspended all of its classes and now I have come up with a working model. I have streamlined my usual work pace in light of the urgent need of such an app. I'm also proud that I was able to successfully implement the Geofire API into my app, given that it didn't have too many resources online to go off of. Most importantly, I'm proud of the fact that I have built an app that has social impact and that can actually help people get through this current pandemic. I always strive to use technology to make the world a better place.
What I learned
I learnt how to integrate APIs other than ones that I'm normally used to implementing (official ones like Google Maps) into mobile applications and how to request location of users using the Google Maps API. I also learnt how to communicate with databases such as Firebase over REST API calls as well as reformatting and cleaning up large data sets.
What's next for Coronavirus Tracker App
Next, I want the app to also notify people when they have exited and moved within the radius of the Coronavirus case. This would give the users more information about the area that they are in. Since this app is designed for people who have to make the risky trips to grocery stores and restaurants, I also want to implement a feature that would tell people which grocery stores have which stocks of items available at the moment. This would probably have to be crowd-sourced information and this feature would once again relieve the tension of such people, saving wasted trips to empty grocery stores. I also plan to release this app on the Play store in the upcoming days to make some actual impact on people's lives.