Covisual
COVID-19 statistics for Poland, mapped by voivodeship, fed by my own scraper.
- Type
- Data visualisation
- Role
- Design and development, data pipeline
- Year
- 2021–2023
- For
- Personal project
- Stack
- Next.js 13 · TypeScript · MongoDB · Chart.js · Leaflet · Puppeteer
02
Context
In 2021 official Polish COVID-19 data was published on dashboards, not as an API. To visualise it, I first had to collect it.
03
Role
Personal project. I built both the scraper and the visualisation; both are public.
04
Idea
Collect first, then draw.
A daily scraper turned two government dashboards into a database. The app turned that database into a map.
05
Experience
- A map of the 16 voivodeships coloured by total infections, with detail charts per region.
- Global statistics from an external API in a sidebar, revalidated every hour.
06
System
- CollectionNode.js + Puppeteer crawling two dashboards dailyValidation before writing, no duplicates
- DataMongoDB via Mongoose
- APINext.js route handler over MongoDBExternal global statistics API
- InterfaceNext.js 13 App RouterLeaflet choropleth, Chart.js
07
Details
Checking the scrape
The scraper validated each day’s result for corruption before writing, and only wrote days that were not already in the database.
08
Output
Two public repositories: the app and the scraper. The app is no longer deployed.
09
Reflection
A project that depended on someone else’s dashboards - it taught me to treat every external source as something that will change.