# Changelog - Scommetti App Questo file tiene traccia di tutte le modifiche ad alto livello del progetto. ## Struttura del Progetto ``` scomettiapp/ ├── backend-node/ # Backend Node.js con Express ├── frontend-angular/ # Frontend Angular 20 ├── frontend-flutter/ # Frontend Flutter (placeholder) └── docker-compose.yml # Orchestrazione dei servizi ``` --- ## ✅ Completato ### Infrastruttura Base - [x] Setup struttura progetto con backend Node.js e frontend Angular - [x] Configurazione Docker Compose per orchestrazione servizi - [x] Setup database PostgreSQL per dati relazionali (utenti, gruppi, amicizie) - [x] Setup database MongoDB per scommesse - [x] Script di seed per popolamento dati di test ### Backend (Node.js + Express) #### Database & Modelli - [x] Modello User (PostgreSQL) - id, name, email, avatarUrl, score - [x] Modello Group (PostgreSQL) - id, name - [x] Modello Friendship (PostgreSQL) - gestione amicizie bidirezionali - [x] Modello FriendRequest (PostgreSQL) - gestione richieste di amicizia - [x] Modello Bet (MongoDB) - scommesse con partecipanti, stato, posta in gioco - [x] Associazioni many-to-many tra User e Group - [x] Schema SQL di inizializzazione database (init.sql) #### API Endpoints - [x] `/api/initial-data` - Caricamento dati iniziali (utente corrente, amici, gruppi) - [x] `/api/users` - Gestione utenti - [x] `/api/groups` - CRUD gruppi - [x] `/api/groups/:id/members` - Gestione membri dei gruppi - [x] `/api/bets` - CRUD scommesse - [x] `/api/bets/by-time` - Scommesse filtrate per periodo temporale - [x] `/api/bets/by-group/:groupId` - Scommesse per gruppo - [x] `/api/friends` - Lista amici - [x] `/api/friends/requests` - Richieste di amicizia (GET, POST, PATCH) #### Configurazione - [x] Server Express con middleware CORS - [x] Connessione doppio database (PostgreSQL + MongoDB) - [x] Seed automatico al primo avvio - [x] Gestione variabili ambiente (PORT, MONGO_URI, POSTGRES_URI) ### Frontend (Angular 20) #### Servizi - [x] `ApiService` - Comunicazione HTTP con backend - [x] `DataService` - Gestione stato applicazione con RxJS signals #### Componenti Principali - [x] `AppComponent` - Layout principale con navigation bar - [x] `HomeComponent` - Dashboard principale con visualizzazione scommesse - [x] `BetsByTimeComponent` - Filtro scommesse per periodo (oggi, settimana, mese) - [x] `BetsByGroupComponent` - Filtro scommesse per gruppo - [x] `DiscoverComponent` - Scoperta scommesse pubbliche - [x] `CreateBetComponent` - Creazione nuove scommesse - [x] `GroupsComponent` - Gestione gruppi - [x] `GroupDetailComponent` - Dettaglio singolo gruppo - [x] `ProfileComponent` - Profilo utente - [x] `EditProfileComponent` - Modifica dati profilo - [x] `BetCardComponent` - Card riutilizzabile per visualizzare scommesse #### UI/UX - [x] Design responsive con Tailwind CSS - [x] Bottom navigation con 5 sezioni (Home, Scopri, Crea, Gruppi, Profilo) - [x] Sistema di routing client-side tra viste - [x] Tema dark con palette slate/cyan #### Modelli TypeScript - [x] Modelli TypeScript per tutte le entità (Bet, User, Group, ecc.) - [x] Enum per stati scommesse (ACTIVE, AWAITING_VALIDATION, COMPLETED) - [x] Enum per ruoli partecipanti (PARTICIPANT, OBSERVER) --- ## 📋 Da Fare ### Backend #### Autenticazione & Sicurezza - [ ] Sistema di autenticazione (JWT/OAuth) - [ ] Middleware di protezione delle route - [ ] Validazione input utente - [ ] Rate limiting - [ ] Gestione sessioni utente #### Funzionalità Scommesse - [ ] Logica di validazione vincitori - [ ] Sistema di votazione per vincitori (per scommesse tra amici) - [ ] Notifiche per eventi scommessa (inizio, fine, vincitore) - [ ] Cronologia scommesse completate - [ ] Statistiche utente (win rate, streak, ecc.) #### Funzionalità Sociali - [ ] Chat/commenti nelle scommesse - [ ] Notifiche in tempo reale - [ ] Sistema di reputazione/badge - [ ] Feed attività amici #### Ottimizzazioni - [ ] Caching con Redis - [ ] Paginazione risultati - [ ] Query optimization - [ ] File upload per avatar personalizzati - [ ] Compressione risposte HTTP ### Frontend #### Funzionalità Mancanti - [ ] Visualizzazione dettaglio scommessa - [ ] Modifica/eliminazione scommessa - [ ] Gestione richieste di amicizia (UI) - [ ] Ricerca utenti - [ ] Notifiche push - [ ] Stati di caricamento e gestione errori - [ ] Conferme azioni critiche (elimina, ecc.) #### UX Improvements - [ ] Animazioni transizioni tra viste - [ ] Skeleton loaders - [ ] Pull to refresh - [ ] Infinite scroll per liste lunghe - [ ] Filtri avanzati scommesse - [ ] Ordinamento personalizzato #### Testing - [ ] Unit test per componenti - [ ] Integration test per servizi - [ ] E2E test per flussi principali ### DevOps & Deployment - [ ] CI/CD pipeline - [ ] Health check endpoints - [ ] Logging strutturato - [ ] Monitoring e alerting - [ ] Backup automatici database - [ ] Documentazione API (Swagger/OpenAPI) - [ ] Docker production-ready configuration - [ ] Environment separati (dev, staging, prod) ### Flutter App - [ ] Inizializzare progetto Flutter - [ ] Implementare le stesse funzionalità del frontend Angular - [ ] Setup build per iOS/Android --- ## 🔮 Possibili Sviluppi Futuri - [ ] Integrazione con provider di pagamento per scommesse con denaro reale - [ ] Gamification avanzata (livelli, achievement) - [ ] Scommesse su eventi pubblici (sport, politica, ecc.) - [ ] Marketplace di scommesse - [ ] Analytics dashboard per amministratori - [ ] API pubblica per integrazioni esterne - [ ] App mobile nativa (Flutter) - [ ] Versione web pubblica (landing page) --- ## Note Tecniche ### Stack Tecnologico - **Backend**: Node.js, Express, Sequelize (PostgreSQL), Mongoose (MongoDB) - **Frontend**: Angular 20, RxJS, Tailwind CSS, Vite - **Database**: PostgreSQL (dati relazionali), MongoDB (scommesse) - **DevOps**: Docker, Docker Compose ### Porte - Backend API: `3000` - Frontend Dev: `4200` - PostgreSQL: `5432` - MongoDB: `27017` ### Database - PostgreSQL contiene: Users, Groups, Friendships, FriendRequests - MongoDB contiene: Bets (per maggiore flessibilità dello schema)