Stack:
- NodeJS
- ExpressJS
- Puppeteer
- MongoDB
- amCharts
- Vanilla JS
With the new coronavirus spreading quickly throughout the world, people rely on data to understand the situation and get a sense of things to come. The Quebec government set up a website with updated information on cases, tests, deaths and a breakdown of some of that information by region and age group. Which is helpful! But the government website uses simple tables to convey all that information. Usually, graphs help people better understand data. Also, the government website doesn't contain a cumulative cases evolution - which would show people how the disease is spreading in our province - or a historic of new cases confirmed per day - which would help track the testing. This app aims to bring all that information to life in an easy to digest format.
When I set up to build this app, several days with confirmed cases in Quebec had already been registered. So, the first few days of data where retrieved with the help of the Internet Archive's Wayback Machine. From the moment the scraper was set up and the server was connected to the MongoDB database, all data is retrieved daily from the government website and added to the database.
The scraper was split into a separated app, which now also scrapes the Canadian website for some basic information. You can see the scraper code here.
The bulk of the work is done by the server, scraping data from the website, and by the amCharts module. The result is, for the end user, a static page, thus a simple HTML/JS/CSS structure suffices to have the information on the page.