WatchCov Project Story


Most news outlets or information sources present data on COVID-19 in the form of graphs or tables of statistics. When there are filters involved, graphs and tables can seldom accurately capture the complexities of the combinations of age, gender, report date and exposure in relation to the distribution and number of COVID-19 cases. These presentations of data are often difficult to visualize or keep track of since each of the many public health units across Canada report their own COVID-19 case data and so people are left with collections of data. We thought it would be useful to combine these various sources to allow for data visualization on a single map of Canada which makes it easier for people to interpret and understand COVID-19 case data in Canada by any combination of age, gender, report date, exposure, and case status so they can get an idea for Canada’s progress in the pandemic.

What it does

WatchCov provides a simple case visualization tool for anyone curious about the distribution of COVID-19 cases in Canada. WatchCov allows users to filter COVID-19 case data by any combination of age range, gender, case report date interval, method of exposure and case status providing useful visuals to represent the data of interest.

How we built it

Front end: Javascript, html/css geodata Backend: Used Flask, Python: Datetime, csv, json Note: Used only half of the full dataset due to limitations of heroku.

Our Flask server processes the CSV file and saves the data in memory. We provide API endpoints to query the data based on several parameters (i.e. case status, date range, gender, etc.).

Our front-end utilizes the AmCharts JS library to render geoJSON data. Every time the user updates the filters, there is a call to our backend which returns the data. We decided to delegate the computations to a server since AmCharts already uses a lot of processing power to render the map.

We deployed the web app on Heroku. However, due to the memory limit of the free servers, we were unable to download the entire dataset. Thus, we decided to only use half of the dataset for this presentation so many regions do not appear on the map.

Challenges we faced

It was difficult finding reliable data which included most, if not all, of the public health units across Canada. We also had some trouble deciding on how we wanted to display the data so it would not crowd the map and was easy to understand for everyone.

Accomplishments we are proud of

We are proud that we were able to produce a simple and efficient website. We are especially proud of our UI design which we expect users to be able to understand and operate without trouble. In addition to our simple design, individual filter searches do not take a lot of time to process and refresh the map encouraging users to visualize different combinations of filters.

What we learned

We learned how to process csv file data such that applying different filters will not take too much time to process and the data presented will fit the filters applied. We subsequently learned how to load csv files into JSON format. We also learned how to build a website using Javascript and Python.

What's next for WatchCov ?

We are planning to add support for vaccination data as soon as it becomes more readily available to allow for overlay of vaccination data and case data to monitor outbreaks and effectiveness of vaccines. We also plan to be able to visualize changes in cases as well as vaccinations over a time period which will provide a nice graphic for how the SARS-CoV-2 virus is behaving in Canada and to show our progress in fighting the SARS-CoV-2 virus. We will also figure out how to use the full data set to get around the heroku limitation.

Share this project: