Files
2026-03-26 22:46:03 +01:00

187 lines
6.0 KiB
Markdown

# 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)