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

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 backend
  • DataService - Gestione stato applicazione con RxJS signals

Componenti Principali

  • AppComponent - Layout principale con navigation bar
  • HomeComponent - Dashboard principale con visualizzazione scommesse
    • BetsByTimeComponent - Filtro scommesse per periodo (oggi, settimana, mese)
    • BetsByGroupComponent - Filtro scommesse per gruppo
  • DiscoverComponent - Scoperta scommesse pubbliche
  • CreateBetComponent - Creazione nuove scommesse
  • GroupsComponent - Gestione gruppi
    • GroupDetailComponent - Dettaglio singolo gruppo
  • ProfileComponent - Profilo utente
    • EditProfileComponent - 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)