pgCOVAPI mette a disposizione un servizio Web API pubblico che permette di accedere agli Open Data COVID-19 pubblicati sulla repository Github del Dipartimento di Protezione Civile. Tramite il sito Web è possibile visualizzare i dati forniti dal servizio elaborati in forma grafica.
Sito Web - https://pgcovapi.net
Il sito web è raggiungibile da chiunque. Il suo scopo è solamente mostrare le informazioni elaborate in forma grafica (attualmente disponibili Grafici e Mappa).
Servizio API - https://pgcovapi.net/api/
Il servizio API è anche esso pubblico. Ricava i dati dal database MongoDB Atlas e li restituisce al richiedente in formato JSON. Tutti i percorsi e i filtri applicabili sono descritti nella documentazione API.
Documentazione API - https://ijn-shalma.github.io/pgCOVAPI
La documentazione API, realizzata con SwaggerUI, descrive i diversi percorsi del servizio e ne elenca tutti i parametri disponibili. Dalla pagina è possibile costruire e provare il funzionamento dell'API.
Silvio Caprara: Capo progetto, Sviluppatore - Backend
Pietro Chiartano: Sviluppatore - Database Admininistrator
Yun Qing Zhou: Sviluppatore - Frontend
La realizzazione dell'applicazione web e del servizio è stata affrontata con l'utilizzo del MERN stack.
- MongoDB: DBMS non relazionale.
- ExpressJS: Framework back-end per NodeJS.
- ReactJS: Libreria di front-end.
- NodeJS: Ambiente di runtime dell'applicazione.
I dati utilizzati all'interno dell'applicazione provengono dal Dipartimento di Protezione Civile Italiana. Sono distribuiti sotto forma di Open-Data e quindi di libero accesso (sotto licenza Creative Commons 4.0 International).
Repository GitHub della Protezione Civile Italiana
Per la creazione della mappa interattiva sono stati utilizzati dei file .geojson contenenti i limiti delle province italiane. Sono anche essi dati facenti parte di una repository pubblica di Github.
├── client
│ ├── package-lock.json
│ ├── package.json
│ ├── public
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ └── robots.txt
│ └── src
│ ├── App.css
│ ├── App.js
│ ├── App.test.js
│ ├── components
│ │ ├── Banner.js
│ │ ├── chart
│ │ │ ├── Chart.js
│ │ │ ├── ChartContainer test.js
│ │ │ ├── ChartContainer.js
│ │ │ ├── ChartForm.js
│ │ │ ├── ChartSelect.js
│ │ │ └── Loading.js
│ │ ├── css
│ │ │ ├── Banner.css
│ │ │ ├── Chart.css
│ │ │ ├── ChartContainer.css
│ │ │ ├── DataCarousel.css
│ │ │ ├── Features.css
│ │ │ ├── Footer.css
│ │ │ ├── images
│ │ │ │ └── bg2.jpg
│ │ │ ├── Loading.css
│ │ │ └── Navbar.css
│ │ ├── DataCarousel.js
│ │ ├── Footer.js
│ │ ├── map
│ │ │ ├── data
│ │ │ │ └── limits_IT_provinces.json
│ │ │ ├── Map.css
│ │ │ └── Map.js
│ │ └── Navbar.js
│ ├── index.css
│ ├── index.js
│ └── logo.svg
├── docs
├── DocumentazioneProgetto.md
├── models
│ ├── nazione.model.js
│ ├── provincia.model.js
│ └── regione.model.js
├── package-lock.json
├── package.json
├── routes
│ └── api
│ ├── nazione.js
│ ├── province.js
│ ├── regione.js
│ └── root.js
├── scripts
│ └── updater.js
├── README.md
└── server.js