Covid Data Insights is a web-based mapping application that uses the Leaflet.js library (documentation available here: https://leafletjs.com/) for creating an interactive map to display a chloropleth map for COVID-19 cases. It makes requests to 2 APIs:
- CovidDataManagement API: this API retrieves the files provided by World Health Organizatinon - WHO, and uses CSV Helper library for reading those files. Then, it loads the COVID-19 data contained in those files and stores the information in SQL Server database
- GeoSpatialDataLoader API: this API consumes a GeoJson file obtained in Natural Earth website (https://www.naturalearthdata.com/downloads/10m-cultural-vectors/) and saves the data contained in that file in a PostgreSQL database, using PostGIS extension
Important considerations used during the development:
- GeoJson uses [long, lat] format to represent coordinates positions (https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.1)
- Leaflet.js uses [lat, long] format to represent coordinates positions (https://leafletjs.com/reference.html#latlng)
![architecture image architecture image](https://private-user-images.githubusercontent.com/36134456/274403426-aa92c1e0-b406-48e4-ab19-9b4420ae4843.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA2OTkwOTgsIm5iZiI6MTcyMDY5ODc5OCwicGF0aCI6Ii8zNjEzNDQ1Ni8yNzQ0MDM0MjYtYWE5MmMxZTAtYjQwNi00OGU0LWFiMTktOWI0NDIwYWU0ODQzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzExVDExNTMxOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWU0NGIzMTExNDYxNDI0MTk5NGY5ZDllODBhMmM1OWU4ZTFhMzliYTNmYjg2MTU4ZjQ4NGRjOTIwNTMxNTVmZTcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.ZERyPCrLREiCxQusCk5h83lxehhpzlcjrtYYcDuNI0U)
- .NET 6
- C#
- ASP.NET MVC Core
- ASP.NET WebApi
- Background Services
- Entity Framework Core
- LINQ
- SQL Server
- PostgreSQL
- NLog
- CsvHelper
- Javascript
- CSS
- HTML5
- Leaflet.js
Home page displaying a Leaflet map with a legend and a filter that shows the Global/World detailed information:
![architecture image architecture image](https://private-user-images.githubusercontent.com/36134456/274401803-1f23367d-c833-4192-8610-122af3d22319.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA2OTkwOTgsIm5iZiI6MTcyMDY5ODc5OCwicGF0aCI6Ii8zNjEzNDQ1Ni8yNzQ0MDE4MDMtMWYyMzM2N2QtYzgzMy00MTkyLTg2MTAtMTIyYWYzZDIyMzE5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzExVDExNTMxOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTc1MTM5ZGExZmQ1ZDg3NTM0Njg1YzY0MTJkNDVkNTVmMTg5NzRiOTVmMTEzOGFjNzUxMzU1MDJkZjUwMTg4MDkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.NiuuCWSPo8YpBneoqECEv59hUzYxZtRgdxQRnsMkpik)
Hover the mouse over the polygon regions, and a popup with acumulated cases, vaccinations and deaths will appear:
![architecture image architecture image](https://private-user-images.githubusercontent.com/36134456/274401932-c3097842-020f-4d18-8c7f-a2d860701b1a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA2OTkwOTgsIm5iZiI6MTcyMDY5ODc5OCwicGF0aCI6Ii8zNjEzNDQ1Ni8yNzQ0MDE5MzItYzMwOTc4NDItMDIwZi00ZDE4LThjN2YtYTJkODYwNzAxYjFhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzExVDExNTMxOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTlhOTRhN2Q4NWZmMTdhY2I1NTA0MWFmMTAyZTA3OWY4MzhiOGM3Y2UyZTRkOTg4M2Q0NzAxNWM0M2M0OTQ1ODgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.FF_am6sOpVKKAiA7OH9W6sjlYDRWhJ0TuHiPKsaBQsU)
Click in a specific polygon region, and the filter will update with the data for that specific region:
![architecture image architecture image](https://private-user-images.githubusercontent.com/36134456/274407116-7c9a65ae-1e61-4784-82ba-dc5d375fbe07.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA2OTkwOTgsIm5iZiI6MTcyMDY5ODc5OCwicGF0aCI6Ii8zNjEzNDQ1Ni8yNzQ0MDcxMTYtN2M5YTY1YWUtMWU2MS00Nzg0LTgyYmEtZGM1ZDM3NWZiZTA3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzExVDExNTMxOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWU4ZjI1MWJjZjJkMjVmOGM0MWI0NTgxZjVmZjgxZjQwZjhiNDhmODkxMDZjY2E3ZDgxZDRlYjBkNDMwNzUzMjkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.513VfVbvJqx1bDjRGdjefxmBa36NRIQlPAggUI-aUnM)