What inspired me to choose this challenge.
I observed that numerical statistics on COVID-19 was insufficient to tell the real picture of the pandemic. The idea was to present it aesthetically in a mobile app that only fetches data from the source once then utilize it in many ways. The presentation of data in a graph that showed the rapid growth or any positive sign of a pandemic situation including live cases in a map and inclusion of filters and sorting factors was a thing to make an app stand out.
What was your approach to developing this project?
- The very first step was the preprocessing of the data. I create a Google Cloud VM instance and installed crontab in it.
- It would run a script every day, fetching the data from the source and pushing it to another repository. A separate CSV file was uploaded every day for that day. The repo can be found here.
- The raw CSV was an API to the android app. At app startup, it would check if data is already fetched for the date required i.e. looks up in local database otherwise fetch it from the server.
- The app has basically three pages or tabs. The first once shows us the numerical statistics. The total confirmed cases, deaths count, confirmed cases till now, or at any date of range given by the user are shown. This was done was computing the difference of numbers in the second and first dates chosen by the user.
- The user may select any country and see details about the country and it's state/province.
- Another page contains the graph view that would calculate statistics of every day and has a great impact on giving ideas about the pandemic. The graph would tell things such as exponential rise in cases or linear rise in cases. Here again, the graph for a particular country can be selected.
- The last page shows the location where a pandemic has occurred. Google map SDK is used to show the latitude and longitude of such places.
How did you use space agency data in your project?
I am using the data provided by WHO along with some other sources. The data is compiled by the Center for Systems Science and Engineering (CSSE) at Johns Hopkins University.
What tools, coding languages, hardware, software did you use to develop your project?
Tools & Software
- Google Cloud
- Github
- Android Studio
- MVVM pattern
Coding languages
- Python
- Java
Libraries
- pandas (python)
- MPAndroidChart (android)
Hardware
- Google Cloud Compute Engine (Used for precomputation of the source before feeding to a client app) - 1 vCPU, 0.6 GB memory, 10 GB storage
- MacBook Pro OS X (Used for development of an android app) - Retina, 13-inch, Early 2015
- Samsung Galaxy Note9, Samsung Galaxy M20 (Used for testing in the real device)
What problems and achievements did your team have?
- The problem that came in my head was data incompatibility. The data structure of data did not match with past data and there were new fields published sporadically. I had to make an adapter bridge to overcome this. Instead of having data fetch directly from the source, another repository contains the clean data compiled by an automatic script in Google Cloud Compute Engine.
- Next was the graph presentation library for an android application. I used MPAndroidChart for this and the main focus was on the business logic rather than building graphing library by own.
- Another thing was using MVVM pattern for android app development. As app was highly dependent on data, local storage was used and there were minimum network calls to show data.
- The selection of the date range was also a challenge. Android material component provides a date range selector which made it easier to implement. The calculation of total was done on the basis of the given range.
- The sorting factor was also very desirable. There may be a situation when a user wants to see a country with 0 deaths but with most cases or a country where deaths are maximum but none are recovered which depicts the critical situation.