6.0 KiB
6.0 KiB
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
- Setup struttura progetto con backend Node.js e frontend Angular
- Configurazione Docker Compose per orchestrazione servizi
- Setup database PostgreSQL per dati relazionali (utenti, gruppi, amicizie)
- Setup database MongoDB per scommesse
- Script di seed per popolamento dati di test
Backend (Node.js + Express)
Database & Modelli
- Modello User (PostgreSQL) - id, name, email, avatarUrl, score
- Modello Group (PostgreSQL) - id, name
- Modello Friendship (PostgreSQL) - gestione amicizie bidirezionali
- Modello FriendRequest (PostgreSQL) - gestione richieste di amicizia
- Modello Bet (MongoDB) - scommesse con partecipanti, stato, posta in gioco
- Associazioni many-to-many tra User e Group
- Schema SQL di inizializzazione database (init.sql)
API Endpoints
/api/initial-data- Caricamento dati iniziali (utente corrente, amici, gruppi)/api/users- Gestione utenti/api/groups- CRUD gruppi/api/groups/:id/members- Gestione membri dei gruppi/api/bets- CRUD scommesse/api/bets/by-time- Scommesse filtrate per periodo temporale/api/bets/by-group/:groupId- Scommesse per gruppo/api/friends- Lista amici/api/friends/requests- Richieste di amicizia (GET, POST, PATCH)
Configurazione
- Server Express con middleware CORS
- Connessione doppio database (PostgreSQL + MongoDB)
- Seed automatico al primo avvio
- Gestione variabili ambiente (PORT, MONGO_URI, POSTGRES_URI)
Frontend (Angular 20)
Servizi
ApiService- Comunicazione HTTP con backendDataService- Gestione stato applicazione con RxJS signals
Componenti Principali
AppComponent- Layout principale con navigation barHomeComponent- Dashboard principale con visualizzazione scommesseBetsByTimeComponent- Filtro scommesse per periodo (oggi, settimana, mese)BetsByGroupComponent- Filtro scommesse per gruppo
DiscoverComponent- Scoperta scommesse pubblicheCreateBetComponent- Creazione nuove scommesseGroupsComponent- Gestione gruppiGroupDetailComponent- Dettaglio singolo gruppo
ProfileComponent- Profilo utenteEditProfileComponent- Modifica dati profilo
BetCardComponent- Card riutilizzabile per visualizzare scommesse
UI/UX
- Design responsive con Tailwind CSS
- Bottom navigation con 5 sezioni (Home, Scopri, Crea, Gruppi, Profilo)
- Sistema di routing client-side tra viste
- Tema dark con palette slate/cyan
Modelli TypeScript
- Modelli TypeScript per tutte le entità (Bet, User, Group, ecc.)
- Enum per stati scommesse (ACTIVE, AWAITING_VALIDATION, COMPLETED)
- 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)