diff --git a/README.md b/README.md index 34e2aa1..67f5d73 100644 --- a/README.md +++ b/README.md @@ -1,42 +1,63 @@ -# WalkAware Trento +
+


WalkAware Trento

+
+
+ + + + + + +
Progetto per il corso di Ingegneria del software, prof. Sandro Fiore - Università degli studi di Trento. ## Descrizione -Walkaware Trento si propone di aiutare il comune di Trento a migliorare alcuni aspetti della città. +Il progetto si suddivide in due applicazioni rivolte a due categorie di utenti diverse. -Il progetto si suddivide in due applicazioni rivolte a due categorie di utenti diverse: +La prima è un'app mobile rivolta ai cittadini. L’interfaccia si presenta come una mappa e una barra di ricerca tramite la quale l’utente può cercare luoghi e ottenere indicazioni stradali come pedone. I passi dell'utente vengono registrati sotto forma di punti, che potranno poi essere utilizzati per ottenere buoni sconto per esercizi e attrazioni locali. Inoltre l’utente può inviare segnalazioni se incontra dei problemi nelle infrastrutture dislocate sul territorio. -1. Un'app mobile dedicata ai cittadini, dove l’utente viene incentivato a camminare e segnalare problemi sul territorio. I punti accumulati con le azioni precedenti possono essere utilizzati in eventi culturali e negozi locali. +La seconda parte è una web app che aggrega i dati prodotti dai cittadini, permette l'amministrazione delle informazioni sulle aziende convenzionate e i premi messi a disposizione, suggerisce luoghi d’interesse che appariranno sulla mappa e consente la gestione delle segnalazioni. -2. Un'app web dedicata al supporto tecnico e a dipendenti del comune. Questa raccoglie i dati relativi agli utenti mobile e delle aziende convenzionate. +## Come usare -## Requisiti -- Node.js -- Database MongoDB -- Account Cloudflare R2 +### In cloud -## Come usare -Il servizio web é disponibile in cloud ai seguenti link: +Il servizio è fruibile in cloud ai seguenti indirizzi - [WalkAware Trento Backend](https://walkaware.onrender.com/) + - [WalkAware Trento Frontend](https://walkaware-frontend.onrender.com) + - L'applicazione mobile è scaricabile nell'[ultima release](/~https://github.com/aleiepure/WalkAware/releases/latest) -Altrmenti seguire i passi successivi per eseguire l'app in locale. +### In locale + +#### Dipendenze + +- Node.js +- Database MongoDB +- Account Cloudflare R2 + +#### Istruzioni + +Seguire i seguenti passaggi + 1. Clona repository: -``` bash -git clone /~https://github.com/aleiepure/WalkAware.git -cd WalkAware + +``` shell +git clone /~https://github.com/aleiepure/WalkAware.git && cd WalkAware ``` -Per i prossimi passi da seguire fare riferimento ai relativi README.md di [backend](./backend/README.md), [frontend](./frontend/webapp/README.md) e [Mobile App](./frontend/mobile/README.md). - + +2. Segui le istruzioni nei file README nelle sottocartelle [backend/](./backend/README.md), [frontend/webapp/](./frontend/webapp/README.md) e [frontend/mobile/](./frontend/mobile/README.md). + ## Organizzazione Repository + ```shell ├── backend ├── frontend │   ├── mobile │   └── webapp -└── readme.md -``` \ No newline at end of file +└── README.md +``` diff --git a/backend/README.md b/backend/README.md index 270e467..cc51f62 100644 --- a/backend/README.md +++ b/backend/README.md @@ -1,24 +1,28 @@ -# WalkAware Trento Backend +# WalkAware Trento - Backend Il backend è sviluppato utilizzando Express.js e offre una serie di API RESTful per gestire diverse funzionalità dell'applicazione. Il servizio è eseguibile in cloud a questo indirizzo: [WalkAware Trento Backend](https://walkaware.onrender.com/), per eseguire l'app in locale seguire le seguenti indicazioni. - ## Come usare -1. Clonare il repository se non è già stato fatto: -``` bash -git clone /~https://github.com/aleiepure/WalkAware.git -cd WalkAware/backend + +1. Dopo ever [clonato la repo](../../README.md#istruzioni) entrare nella cartella del backend + +``` shell +cd backend ``` -2. Installa le dipendenze: -``` bash + +2. Installa le dipendenze + +``` shell npm install ``` ### Configurazione -Crea un file .env nella radice della cartella e aggiungi le seguenti variabili d'ambiente: -```bash + +Crea un file `.env` nella radice della cartella e aggiungi le seguenti variabili d'ambiente + +```shell SUPER_SECRET="password generazione jwt token" MONGODB_URI="uri database mongodb production" MONGODB_URI_TEST="uri database mongodb test" @@ -26,26 +30,34 @@ R2_ACCOUNT_ID="R2 account id" R2_ACCESS_KEY_ID="R2 chiave di accesso" R2_SECRET_ACCESS_KEY="R2 chiave segreta di accesso" ``` -Assicurarsi di sostituire con i valori corretti. + +Assicurarsi di sostituire con i valori corretti. ### Esecuzione + Per avviare il server in modalità di production: -```bash + +```shell node ./index.js ``` + Per avviare il server in modalità di sviluppo: -```bash + +```shell npm run run-dev ``` ## Test -I test sono stati sviluppati utilizzando un database apposito e per evitare problemi i file devono essere esguiti sequanzialmente, richiamando lo script presente in package.json con: -```bash -npm run seqtest +Tutte le API REST sono state accuratamente testate tramite unit test. Per eseguire tutti i test usare il comando + +```shell +npm test ``` ## API + La documentazione delle API è accessibile ai seguenti link: -- https://walkaware.docs.apiary.io -- https://walkaware.onrender.com/api-docs +- + +- diff --git a/frontend/mobile/README.md b/frontend/mobile/README.md index 5185aeb..7b881b4 100644 --- a/frontend/mobile/README.md +++ b/frontend/mobile/README.md @@ -1,29 +1,36 @@ -# WalkAware Trento Frontend App Mobile +# WalkAware Trento - Frontend App Mobile L'applicazione mobile è sviluppata in Flutter ed è dedicata agli abitanti della città di Trento. L'app già compilata è scaricabile nell'[ultima release](/~https://github.com/aleiepure/WalkAware/releases/latest). Per eseguirla con un altro backend seguire le seguenti indicazioni. ## Requisiti + - [Flutter](https://docs.flutter.dev/get-started/install) ## Come usare -1. Clonare il repository se non è già stato fatto: -``` bash -git clone /~https://github.com/aleiepure/WalkAware.git -cd WalkAware/frontend/mobile + +1. Dopo ever [clonato la repo](../../README.md#istruzioni) entrare nella cartella del progetto flutter + +``` shell +cd frontend/mobile ``` -2. Per configurare mapbox seguire la sezione "secret token" a questo [link](https://pub.dev/packages/mapbox_maps_flutter#installation) + +2. Configurare Mapbox seguendo la sezione "secret token" a questo [link](https://pub.dev/packages/mapbox_maps_flutter#installation) + 3. Installa le dipendenze -```bash + +```shell flutter pub get ``` -4. Compila l'applicazione: -``` bash -flutter build apk --dart-define PUBLIC_ACCESS_TOKEN= \ + +4. Esegui l'applicazione su un dispositivo Android con debug abilitato + +``` shell +flutter run --dart-define PUBLIC_ACCESS_TOKEN= \ --dart-define BACKEND_BASE_URL= \ + --dart-define FRONTEND_BASE_URL= \ --dart-define JWT_SECRET= ``` -Assicurarsi di sostituire con i valori corretti. - +Assicurarsi di sostituire i valori corretti. diff --git a/frontend/mobile/lib/pages/coupon_details_page.dart b/frontend/mobile/lib/pages/coupon_details_page.dart index b4928ac..7fd5c0c 100644 --- a/frontend/mobile/lib/pages/coupon_details_page.dart +++ b/frontend/mobile/lib/pages/coupon_details_page.dart @@ -92,7 +92,7 @@ class CouponDetailsPage extends StatelessWidget { Padding( padding: const EdgeInsets.all(16.0), child: QrImageView( - data: '$_frontendBaseUrl/valida?premioId=${coupon.id}', + data: '$_frontendBaseUrl/valida_buono?buono=${coupon.id}', version: QrVersions.auto, size: 192, ), diff --git a/frontend/mobile/lib/pages/onboarding.dart b/frontend/mobile/lib/pages/onboarding.dart index 9503047..6ddf5d8 100644 --- a/frontend/mobile/lib/pages/onboarding.dart +++ b/frontend/mobile/lib/pages/onboarding.dart @@ -143,7 +143,7 @@ class _OnboardingPageState extends State { pages: [ PageViewModel( title: "Ciao!", - body: "Benvenuto in WalkAware Trento, l'app che ti premia quando sei in giro per la città di Trento.", + body: "Benvenuto/a in WalkAware Trento, l'app che ti premia quando sei in giro per la città di Trento.", decoration: pageDecoration, image: const Icon(Icons.waving_hand, size: 200), ), @@ -164,7 +164,7 @@ class _OnboardingPageState extends State { PageViewModel( title: "Tieni gli occhi aperti", body: - "Se noti qualcosa malfunzionante o pericoloso lungo il tuo percorso, segnalalo. Aiuterai il Comune di Trento a sistemarlo più in fretta e guadagnerai 1 punto extra!", + "Se noti qualcosa malfunzionante o pericoloso lungo il tuo percorso, segnalalo. Aiuterai il Comune di Trento a sistemarlo più in fretta.", decoration: pageDecoration, image: const Icon(Icons.report, size: 200), ), diff --git a/frontend/mobile/lib/pages/register_page.dart b/frontend/mobile/lib/pages/register_page.dart index 3a84f63..e569ea7 100644 --- a/frontend/mobile/lib/pages/register_page.dart +++ b/frontend/mobile/lib/pages/register_page.dart @@ -48,7 +48,7 @@ class _RegisterPageState extends State { icon: Icon(Icons.alternate_email, size: 48, color: Theme.of(context).colorScheme.secondary), title: const Text('Conferma la tua email'), content: - const Text('Dobbiamo essere sicuri che sei proprio tu. Segui le istruzioni nella mail che hai ricevuto per confermare il tuo account.'), + const Text('Dobbiamo essere sicuri che sei proprio tu. Segui le istruzioni nella mail che hai ricevuto per confermare il tuo account. (Email non implementata.)'), actions: [ TextButton( onPressed: _onShowEmailConfirmationDialogButtonPressed, @@ -64,16 +64,16 @@ class _RegisterPageState extends State { /// The method will close the bottom sheet, open the email app and navigate to the login page. void _onShowEmailConfirmationDialogButtonPressed() { // Open the email app - if (Platform.isAndroid) { - AndroidIntent intent = const AndroidIntent( - action: 'android.intent.action.MAIN', - category: 'android.intent.category.APP_EMAIL', - flags: [Flag.FLAG_ACTIVITY_NEW_TASK], - ); - intent.launch(); - } else if (Platform.isIOS) { - launchUrl(Uri.parse('message://')); - } + // if (Platform.isAndroid) { + // AndroidIntent intent = const AndroidIntent( + // action: 'android.intent.action.MAIN', + // category: 'android.intent.category.APP_EMAIL', + // flags: [Flag.FLAG_ACTIVITY_NEW_TASK], + // ); + // intent.launch(); + // } else if (Platform.isIOS) { + // launchUrl(Uri.parse('message://')); + // } // Close the dialog Navigator.of(context).pop(); @@ -143,7 +143,7 @@ class _RegisterPageState extends State { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: const Text('Errore durante la registrazione'), - backgroundColor: Theme.of(context).colorScheme.primary, + backgroundColor: Theme.of(context).colorScheme.error, ), ); } diff --git a/frontend/webapp/README.md b/frontend/webapp/README.md index 764888a..48493d6 100644 --- a/frontend/webapp/README.md +++ b/frontend/webapp/README.md @@ -1,37 +1,44 @@ -# WalkAware Trento Frontend WebApp -Il frontend offre una Web App sviluppata con Express.js ed ejs. Questa è dedicata al supporto tecnico e ai dipendenti del comune di Trento. +# WalkAware Trento - Frontend WebApp -Il servizio è eseguibile in cloud a questo indirizzo: [WalkAware Trento Frontend](https://walkaware-frontend.onrender.com/), per eseguire l'app in locale seguire le seguenti indicazioni. +Il frontend offre una Web App sviluppata con Express.js ed ejs. Questa è dedicata al supporto tecnico e ai dipendenti del comune di Trento. +Il servizio è eseguibile in cloud a questo indirizzo: [WalkAware Trento Frontend](https://walkaware-frontend.onrender.com/), per eseguire l'app in locale seguire le seguenti indicazioni. ## Come usare -1. Clonare il repository se non è già stato fatto: -``` bash -git clone /~https://github.com/aleiepure/WalkAware.git -cd WalkAware/frontend/webapp + +1. Dopo ever [clonato la repo](../../README.md#istruzioni) entrare nella cartella della webapp + +``` shell +cd frontend/webapp ``` + 2. Installa le dipendenze: -``` bash + +``` shell npm install ``` ### Configurazione -Crea un file .env nella radice della cartella e aggiungi le seguenti variabili d'ambiente: -```bash + +Crea un file `.env` nella radice della cartella e aggiungi le seguenti variabili d'ambiente: + +```shell SUPER_SECRET="password generazione jwt token" BACKEND_BASE_URL="URL backend" ``` -Assicurarsi di sostituire con i valori corretti. + +Assicurarsi di sostituire con i valori corretti. ### Esecuzione + Per avviare il server in modalità di production: -```bash + +```shell node ./index.js ``` + Per avviare il server in modalità di sviluppo: -```bash + +```shell npm run run-dev ``` - - - diff --git a/icon.png b/icon.png new file mode 100644 index 0000000..20d6c69 Binary files /dev/null and b/icon.png differ