Introduzione a Play The Event
Play The Event nasce da un'esigenza concreta: semplificare la gestione degli eventi. Chiunque abbia organizzato una festa, un viaggio di gruppo o un evento aziendale sa quanto possa diventare caotico coordinare invitati, spese, budget e logistica usando strumenti frammentati come fogli Excel, gruppi WhatsApp e note sparse.
Il progetto rappresenta una piattaforma completa per la gestione eventi che unisce in un unico ecosistema tutto il necessario: dalla creazione dell'evento alla suddivisione delle spese, dalla pianificazione dei viaggi all'analisi dei dati con intelligenza artificiale.
Cosa Imparerai in Questa Serie
- L'architettura esagonale e i pattern DDD/CQRS applicati a un progetto reale
- Come modellare un dominio complesso con 86 entità e molteplici aggregati
- Il sistema di sicurezza basato su JWT con HttpOnly cookies e RBAC
- La gestione avanzata degli eventi con macchine a stati e ruoli partecipanti
- Il sistema di suddivisione spese intelligente con quattro modalità di split
- La pianificazione viaggi con itinerari multi-tappa
- L'integrazione con Stripe per i pagamenti
- Il modulo analytics con Python FastAPI e machine learning
- L'internazionalizzazione in 21 lingue
- Le strategie di testing e deployment in produzione
Il Problema che Risolve
Organizzare un evento, che sia una cena tra amici o una conferenza aziendale, comporta una serie di sfide ricorrenti: gestire la lista degli invitati e le conferme di partecipazione, tenere traccia del budget e delle spese, coordinare gli spostamenti e la logistica, suddividere equamente i costi tra i partecipanti, e mantenere tutti aggiornati in tempo reale.
Le soluzioni esistenti sul mercato sono tipicamente frammentate: un'app per le spese condivise, un'altra per gli inviti, un foglio di calcolo per il budget, e innumerevoli messaggi in chat per coordinare il tutto. Play The Event integra tutte queste funzionalità in una piattaforma unica e coerente.
Lo Stack Tecnologico
La piattaforma si basa su uno stack tecnologico moderno e robusto, pensato per garantire scalabilità, manutenibilità e prestazioni elevate.
Backend: Spring Boot 3.4.5 + Java 21
Il cuore del sistema è un backend costruito con Spring Boot 3.4.5 e Java 21, sfruttando le ultime feature del linguaggio come i record, i pattern matching e i virtual threads. Il backend implementa un'architettura esagonale con separazione rigorosa tra dominio, applicazione, infrastruttura e interfacce.
Frontend: Angular 19
L'interfaccia utente è realizzata con Angular 19, utilizzando standalone components, signals per la gestione dello stato reattivo e un design system coerente con supporto completo per il responsive design.
Database: MySQL
Il database relazionale MySQL gestisce la persistenza dei dati con oltre 116 migrazioni Flyway che documentano l'intera evoluzione dello schema nel tempo.
Analytics: Python FastAPI
Un microservizio dedicato in Python con FastAPI si occupa delle analisi avanzate, fornendo insight basati su machine learning per ottimizzare la gestione degli eventi.
Le Funzionalità Principali
Play The Event offre un insieme ricco di funzionalità pensate per coprire ogni aspetto dell'organizzazione:
- Gestione eventi completa: creazione, pubblicazione, gestione partecipanti con ruoli differenziati (organizzatore, co-organizzatore, partecipante, VIP) e macchina a stati per il ciclo di vita dell'evento
- Suddivisione spese intelligente: quattro modalità di split (equa, percentuale, importo fisso, personalizzata) con supporto multi-valuta e calcolo automatico dei saldi
- Pianificazione viaggi: itinerari multi-tappa con attività, alloggi e trasporti, completi di budget e timeline
- Analytics con AI: previsioni di partecipazione, analisi dei costi, suggerimenti per l'ottimizzazione del budget basati su dati storici
- Strumenti agile: gestione task con sprint, story points e board kanban integrati per l'organizzazione del lavoro
- Collaborazione in tempo reale: notifiche WebSocket, aggiornamenti live delle liste partecipanti e chat integrata
L'Architettura ad Alto Livello
L'architettura di Play The Event segue i principi del Domain-Driven Design (DDD) combinati con l'Architettura Esagonale e il pattern CQRS (Command Query Responsibility Segregation).
PLAY THE EVENT - ARCHITETTURA
1. DOMAIN LAYER (Nucleo)
├── Entità di dominio (86 entità)
├── Value Objects (Money, Email, UserId)
├── Aggregate Roots
└── Domain Events
2. APPLICATION LAYER
├── Command Handlers (scrittura)
├── Query Handlers (lettura)
└── Application Services
3. INFRASTRUCTURE LAYER
├── JPA Repositories
├── Security (JWT, OAuth2)
├── Stripe Integration
├── Email Service
└── WebSocket Adapters
4. INTERFACES LAYER
├── 53 REST Controllers
├── DTOs e MapStruct Mappers
└── 100+ API Endpoints
Questa separazione garantisce che il dominio rimanga puro e indipendente dal framework, facilitando il testing, la manutenibilità e l'evoluzione del sistema nel tempo.
I Numeri del Progetto
Per dare un'idea della complessità e della maturità della piattaforma, ecco alcuni numeri significativi:
- 86 entità di dominio che modellano eventi, partecipanti, spese, viaggi, documenti, questionari e molto altro
- 53 controller REST che espongono le API della piattaforma
- 100+ endpoint API documentati e testati
- 21 lingue supportate grazie a un sistema di internazionalizzazione completo
- 116+ migrazioni database gestite con Flyway per un'evoluzione controllata dello schema
- 4 modalità di split spese per coprire ogni scenario di suddivisione costi
- 6 stati del ciclo di vita evento gestiti tramite macchina a stati
Il codice sorgente del progetto è disponibile sul profilo GitHub github.com/fedcal.
Struttura della Serie
Questa serie di articoli tecnici esplora in profondità ogni aspetto di Play The Event, partendo dall'architettura fino al deployment. Ogni articolo è pensato per essere sia una guida pratica per chi vuole implementare pattern simili, sia una documentazione dettagliata delle scelte progettuali adottate.
Nei prossimi articoli analizzeremo nel dettaglio l'architettura esagonale e i pattern DDD, il modello di dominio con le sue 86 entità, il sistema di sicurezza JWT, la gestione degli eventi e dei partecipanti, e molto altro. Ogni articolo includerà esempi di codice reali, diagrammi architetturali e lezioni apprese durante lo sviluppo.
Prerequisiti per Seguire la Serie
- Conoscenza base di Java e del framework Spring Boot
- Familiarità con i concetti di REST API e database relazionali
- Comprensione dei principi SOLID e dei design pattern fondamentali
- Interesse per l'architettura software e il Domain-Driven Design







