10 KiB
10 KiB
Changelog - Frontend Angular
Tracciamento modifiche specifiche del frontend Angular.
✅ Completato
Setup Iniziale
- Inizializzazione progetto Angular 20
- Configurazione Vite come bundler
- Configurazione Tailwind CSS
- Setup TypeScript 5.8
- Configurazione RxJS 7.8
Architettura & Struttura
Servizi
-
ApiService (
services/api.service.ts)- Comunicazione HTTP con backend
- Base URL configurabile
- Metodi per tutte le entità (users, groups, bets, friends)
- Gestione errori HTTP
-
DataService (
services/data.service.ts)- State management con RxJS signals
- Cache dati utente corrente
- Cache amici, gruppi, scommesse
- Metodi per refresh dati
- Observable streams per reactive updates
Modelli TypeScript
-
Bet Model (
models/bet.model.ts)- Interface Bet completa
- Enum BetStatus (ACTIVE, AWAITING_VALIDATION, COMPLETED)
- Enum ParticipantRole (PARTICIPANT, OBSERVER)
- Type BetParticipant
-
User Model (inline nei servizi per ora)
-
Group Model (inline nei servizi per ora)
Componenti Implementati
App Component
- AppComponent (
app.component.ts)- Layout principale con navigation bar
- Gestione routing tra viste con signal
- Bottom navigation responsive
- 5 sezioni: Home, Scopri, Crea Scommessa, Gruppi, Profilo
- FAB centrale per creazione scommessa
Home Section
-
HomeComponent (
components/home/home.component.ts)- Dashboard principale
- Visualizzazione scommesse attive/passate
- Toggle tra filtri temporali e per gruppo
- Integrazione con sotto-componenti
-
BetsByTimeComponent (
components/home/bets-by-time/bets-by-time.component.ts)- Filtro scommesse per periodo temporale
- Periodi: Oggi, Questa Settimana, Questo Mese
- Indicatore visuale periodo selezionato
- Fetch dati da API con filtri
-
BetsByGroupComponent (
components/home/bets-by-group/bets-by-group.component.ts)- Filtro scommesse per gruppo
- Selezione gruppo da dropdown
- Opzione "Tutti i Gruppi"
- Fetch dati da API per gruppo specifico
Discover Section
- DiscoverComponent (
components/discover/discover.component.ts)- Esplorazione scommesse pubbliche
- Lista scommesse scopribili
- Possibilità di entrare come observer
Create Bet Section
- CreateBetComponent (
components/create-bet/create-bet.component.ts)- Form creazione nuova scommessa
- Campi: titolo, descrizione, posta in gioco, data fine, gruppo, visibilità
- Validazione form
- Event emitter per chiusura
- Integrazione con API
Groups Section
-
GroupsComponent (
components/groups/groups.component.ts)- Lista tutti i gruppi dell'utente
- Navigazione verso dettaglio gruppo
- Creazione nuovo gruppo
- Badge contatore membri
-
GroupDetailComponent (
components/groups/group-detail/group-detail.component.ts)- Dettaglio singolo gruppo
- Lista membri con avatar
- Aggiunta membri al gruppo
- Rimozione membri (se admin)
- Eliminazione gruppo
Profile Section
-
ProfileComponent (
components/profile/profile.component.ts)- Visualizzazione profilo utente
- Avatar, nome, email, punteggio
- Statistiche personali
- Lista richieste di amicizia pending
- Bottone modifica profilo
-
EditProfileComponent (
components/profile/edit-profile/edit-profile.component.ts)- Form modifica dati profilo
- Campi: nome, email, avatar URL
- Validazione input
- Save/Cancel actions
Shared Components
- BetCardComponent (
components/bet-card/bet-card.component.ts)- Card riutilizzabile per visualizzare scommesse
- Badge stato scommessa (Attiva, In Attesa, Completata)
- Informazioni partecipanti con avatar
- Posta in gioco
- Date inizio/fine
- Responsive design
UI/UX
Design System
- Tema dark con palette:
- Background: slate-900
- Cards: slate-800
- Accenti: cyan-400/cyan-500
- Testo: white/slate-300
- Tailwind CSS utilities
- Responsive layout mobile-first
- Icone SVG per navigation
Navigation
- Bottom navigation bar sticky
- 5 tab con icone e label
- Indicatore visuale tab attiva (color cyan)
- FAB centrale per azione primaria (Crea Scommessa)
- Hover states e transitions
Interazioni
- Click handlers per navigazione
- Form submissions
- Toggle filters
- Dropdown selects
- Event emitters tra parent/child components
Configurazione
- package.json - Dipendenze e scripts
- angular.json - Configurazione Angular CLI
- tsconfig.json - TypeScript configuration
- tailwind.config.js (implicito con Tailwind)
- vite.config (gestito da Angular)
📋 Da Fare
Funzionalità Core Mancanti
Scommesse
- Visualizzazione dettaglio scommessa completo
- Modal o pagina dedicata
- Cronologia eventi
- Commenti (se implementati)
- Modifica scommessa esistente
- Eliminazione scommessa con conferma
- Dichiarazione vincitore
- Sistema di votazione vincitore
- Join scommessa pubblica come observer
- Leave scommessa
- Invita amici a scommessa
Profilo & Amici
- Ricerca utenti
- Invio richiesta di amicizia (UI)
- Accetta/rifiuta richiesta amicizia (UI)
- Lista amici visualizzata nel profilo
- Visualizzazione profilo altri utenti
- Statistiche avanzate profilo
- Win rate
- Streak
- Classifica generale
- Notifiche
Gruppi
- Modifica info gruppo
- Invita utenti al gruppo
- Gestione permessi gruppo (admin/membro)
- Statistiche gruppo
- Ricerca membri
- Leave gruppo
UX Improvements
Stati & Feedback
- Loading states per tutti i componenti
- Skeleton loaders
- Spinners
- Progress indicators
- Error handling UI
- Toast notifications
- Error messages inline
- Retry mechanisms
- Empty states
- Nessuna scommessa
- Nessun amico
- Nessun gruppo
- Success confirmations
- Toast per azioni completate
- Feedback visuale
Animazioni & Transizioni
- Animazioni transizione tra viste
- Micro-interazioni su bottoni
- Slide/fade effects per modal
- Loading animations
- Skeleton loading per cards
Interattività
- Pull-to-refresh
- Infinite scroll per liste lunghe
- Swipe gestures (elimina, archivia)
- Drag and drop (riordino)
- Conferme azioni critiche
- Modal di conferma eliminazione
- Double-tap protection
Filtri & Ricerca
- Ricerca scommesse per titolo
- Filtri avanzati scommesse
- Per stato
- Per partecipanti
- Per data
- Per posta in gioco
- Ordinamento scommesse
- Per data
- Per popolarità
- Per punteggio
- Salvataggio preferenze filtri
Componenti da Creare
- BetDetailModal/Page - Dettaglio completo scommessa
- ToastNotification - Notifiche toast
- ConfirmDialog - Dialog conferma generica
- SearchBar - Barra di ricerca riutilizzabile
- UserCard - Card utente riutilizzabile
- EmptyState - Componente empty state generico
- LoadingSpinner - Spinner riutilizzabile
- AvatarUpload - Upload avatar con preview
- DatePicker - Selettore date customizzato
- FriendsList - Lista amici con azioni
- NotificationsList - Lista notifiche
- StatsCard - Card statistiche riutilizzabile
Routing & Navigation
- Implementare Angular Router
- Route per ogni vista
- Route parametriche (es. /group/:id)
- Query parameters per filtri
- Route guards
- Deep linking
- Browser back button handling
- Route transition animations
State Management
- Migliorare DataService
- Gestione stato più robusta
- Cache invalidation strategy
- Optimistic updates
- Rollback on error
- Considerare NgRx o Signals API avanzate
- Persistent state (localStorage)
- Sync state across tabs
Forms & Validation
- Reactive forms everywhere
- Validatori custom
- Error messages user-friendly
- Form dirty/pristine tracking
- Unsaved changes warning
- Auto-save drafts
Testing
- Unit test per componenti
- Unit test per servizi
- Integration test
- E2E test con Cypress/Playwright
- Coverage almeno 80%
- Visual regression testing
Performance
- Lazy loading components
- Virtual scrolling per liste lunghe
- Image lazy loading
- OnPush change detection
- Memoization expensive computations
- Bundle size optimization
- Tree shaking
- Code splitting
Accessibilità (a11y)
- ARIA labels
- Keyboard navigation
- Focus management
- Screen reader support
- Contrast ratios WCAG AA
- Semantic HTML
PWA Features
- Service Worker
- Offline mode
- App manifest
- Install prompt
- Push notifications
- Background sync
Internazionalizzazione
- i18n setup (Angular i18n)
- Traduzioni IT/EN
- Date/number formatting locale-aware
- RTL support (se necessario)
DevOps & Build
- Environment files (dev, staging, prod)
- Build optimization per production
- Source maps
- Linting (ESLint)
- Formatting (Prettier)
- Pre-commit hooks (Husky)
- CI/CD pipeline
Monitoring & Analytics
- Error tracking (Sentry)
- Analytics (Google Analytics / Plausible)
- Performance monitoring
- User behavior tracking
🐛 Bug Conosciuti
- Nessun handling errori API in caso di network failure
- Refresh dati non automatico (solo manuale al mount)
- Possibili race conditions su multiple API calls
🔧 Miglioramenti Tecnici Proposti
- Separare models in file dedicati
- Creare barrel exports per organizzazione
- Introdurre design patterns (Repository, Facade)
- Standardizzare naming conventions
- Constants file per magic strings
- Utility functions file
- Typed HTTP responses
- Error types customizzati
- Logging service
- Configuration service
Note Tecniche
Dipendenze Principali
- @angular/core: ^20.3.0
- @angular/common: ^20.3.0
- @angular/platform-browser: ^20.3.0
- rxjs: ^7.8.2
- tailwindcss: latest
- typescript: ~5.8.2
- vite: ^6.2.0
Scripts NPM
npm run dev # Avvia dev server (porta 4200)
npm run build # Build production
npm run preview # Preview build production
Porte
- Dev server:
4200 - API backend:
3000
Browser Target
- Modern browsers (Chrome, Firefox, Safari, Edge)
- ES2022+ support required