Progetto sviluppato in 48h - Download Hackathon 2021
Abbiamo creato un'app mobile (Android/IOS) che permette di consultare le normative vigenti sull'emergenza sanitaria. Con questa applicazione l'utente ha la possibilità di creare e organizzare viaggi/spostamenti di qualsiasi natura, monitorando da un'unica interfaccia le normative vigenti sui territori interessati da questo itinerario. Si prenderà visione sia delle regole dettate da enti pubblici sia segnalazioni da parte della community, votabili per confermarne la veridicità.
Le funzionalità sono le seguenti:
- Possibilità di registrarsi tramite Google:
- Possibilità di registrarsi tramite email e password:
- Possibilità di impostare dei luoghi preferiti in modo da ricevere una notifica in caso di inserimento di una nuova normativa.
- Possibilità di inserire un itinerario per rimanere aggiornati sulle normative in vigore durante il viaggio.
- Possibilità di cercare per ogni singolo luogo le normative vigenti.
- Possibilità di aggiungere una nuova segnalazione per informare la community.
- Possibilità di votare le segnalazioni inserite dalla community.
- Possibilità di ricevere aggiornamenti riguardo i propri itinerari e luoghi preferiti (notifiche push).
Il progetto è composto da due parti, un'app mobile (Android e iOS) scritta in React Native ed un backend PHP basato sul framework Lumen.
Abbiamo utilizzato Firebase per gestire il login (tramite email/password oppure tramite Google) e le notifiche push.
Abbiamo utilizzato Native Base come libreria per stilare i componenti uniformemente e Redux per gestire lo stato interno dell'app.
Abbiamo utilizzato Google Places API per la geolocalizzazione dei posti, usando il place_id di ogni singolo luogo come punto di riferimento. Inoltre abbiamo cacheato nel nostro database le varie chiamate che vengono effettuate a Google in modo da essere più veloci nella riposta e per risparmiare chiamate.
Abbiamo aggiunto una action su Github che ad ogni push su main deploya tutto il backend su Heroku. Prima buildando l'immagine docker del backend e poi caricandola in cloud. Come database utilizziamo RDS di AWS.
- Docker;
- Un token Google, per utilizzare le Places API;
- Una account di servizio di Firebase, per l'autenticazione e l'invio delle notifiche;
cd
in /backend- Creare il
.env
concp .env.example .env
e compilarlo con tutte le variabili d'ambiente necessarie - Incollare il file dell'account di servizio di Firebase
hackatomici-2021-firebase.json
in /backend - Avviare i container con
docker-compose up -d
- Il backend è raggiungibile all'indirizzo localhost:80
NB: Tutte le istruzioni nel file README.md sono relative a macOS. Per riprodurre questo tutorial su un sistema operativo differente, è necessario cercare i package di dipendenza e la relativa installazione.
Per poter eseguire il progetto, è necessario installare node
e watchman
.
brew install node
brew install watchman
Un'altra dipendenza è Xcode. È possibile scaricarlo da Apple.
L'ultima dipendenza è CocoaPods. È possibile installarlo con:
sudo gem install cocoapods
Una volta installate le dipendenze, entrare nella cartella del progetto e scaricare i node_modules con:
// using npm
npm install
// using yarn
yarn
Per lanciare l'app su Android è sufficiente eseguire il comando:
// using npm
npx react-native run-android
// using yarn
yarn android
Prima di lanciare l'app su iOS bisogna assicurarsi di aver installato CocoaPods. Con CocoaPods installato, lanciare il seguente comando per scaricare i Pods necessari:
cd ios && pod install && cd ..
Per lanciare l'app su iOS eseguire il comando:
// using npm
npx react-native run-ios
// using yarn
yarn ios