187 lines
6.0 KiB
Markdown
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)
|