MatchWeb è un progetto didattico pensato per introdurre gli studenti ai principi fondamentali dello sviluppo web full-stack tramite la simulazione di un servizio di scommesse su campionati sportivi. Il progetto combina la creazione di una API REST in Spring Boot con un frontend dinamico e responsive, fornendo una panoramica completa delle tecnologie attuali per il web.
- Familiarizzare con l’architettura client-server e le basi della programmazione per il web.
- Comprendere e applicare i fondamentali del framework Spring, dalla configurazione di un'applicazione fino alla suddivisione della logica tramite controller e servizi.
- Imparare a progettare, pubblicare e consumare API REST, facilitando la comunicazione tra frontend e backend.
- Approfondire le basi del frontend: gestione pagine web, interattività, accesso ai dati remoti tramite JavaScript moderne (fetch API, promises).
- Integrare la gestione utenti, autenticazione, ranking e scommesse, per simulare flussi e funzionalità tipiche di app web reali.
-
Backend
- Implementazione con Spring Boot.
- Definizione di modelli dati.
- Esposizione di API REST per le principali funzionalità offerte.
- Gestione della business logic tramite repository e servizi.
-
Integrazione e Architettura
- Suddivisione in più moduli: uno per la generazione e pubblicazione API delle partite, uno che consuma queste API tramite proxy.
- Comunicazione tramite standard REST e utilizzo di client come Feign per l’integrazione interna tra moduli.
-
Frontend
- Realizzazione di pagine HTML/CSS/JS che sfruttano le API REST.
- Utilizzo di chiamate asincrone con
fetche gestione delle risposte tramite promises, aggiornando dinamicamente la UI. - Adozione di semplici tecniche di responsive design per migliorare l’usabilità su dispositivi mobili e desktop tramite Bootstrap.
Il sistema simula una comunità di utenti suddivisi in diversi ruoli:
- Admin: gestisce gli utenti, può promuovere altri utenti a moderatori, visualizza tutta la classifica, può assegnare i premi ai migliori scommettitori e vedere la lista utenti.
- User: può effettuare scommesse sulle partite in calendario, visualizzare il proprio profilo con statistiche, commentare e consultare la propria posizione in classifica.
- Moderator: ruolo intermedio che può essere attribuito dall’admin a un utente e può accedere ad alcune funzionalità riservate.
User flow tipico:
- Registrazione/Login: l’utente crea un account o effettua l'accesso, acquisendo un ruolo di default ("User").
- Consultazione calendario: ogni utente può vedere le partite in programma e i risultati già disponibili tramite pagine dedicate che si aggiornano dinamicamente tramite chiamate alle API REST.
- Scommesse: l’utente esprime pronostici sulle partite del giorno scegliendo il vincitore tra le squadre; i dati vengono inviati al backend, e la logica di calcolo confronta i pronostici con i risultati reali simulati.
- Classifica e premi: in base ai risultati delle scommesse, il sistema calcola una classifica aggiornata. Gli admin possono assegnare premi ai migliori utenti tramite un meccanismo di estrazione casuale tra i top player.
- Gestione avanzata: Admin/moderatori hanno accesso ad aree riservate per la gestione dei privilegi, dei premi e della visualizzazione statistica globale.
- Il backend, sviluppato in Spring Boot, organizza la logica in servizi e controller, separando chiaramente la generazione dati dalle funzionalità di interazione.
- Le partite vengono generate dinamicamente e possono essere filtrate e visualizzate giorno per giorno, con risultati disponibili tramite endpoint REST.
- Il frontend si collega al backend tramite API, rendendo possibile aggiornare in tempo reale il calendario, i risultati e la classifica utenti.
- La gestione degli utenti, l’autenticazione, la registrazione e il ranking sono esempi di flusso end-to-end che includono sia gestione dati sul backend che interfaccia web adattiva.
- L'integrazione tra i vari moduli avviene tramite chiamata di servizi REST interni e proxy che permettono di mantenere l'architettura modulare e riusabile.