Salta al contenuto principale

Domain Knowledge Base - Web Frontend

Come funziona il dominio, prima di scrivere una riga di codice? Scegli un documento dall'albero a sinistra: ogni pagina spiega una parte del modello.

Regole di Business - Web Frontend

Questo documento elenca le regole di business fondamentali del dominio Web Frontend, identificate con codice univoco BR-NNN. Ogni regola è technology-independent e descrive un vincolo invariante sulla costruzione di interfacce web performanti e accessibili.

---

BR-001 - Ogni Componente ha responsabilità singola e stato esplicito

Codice: BR-001 Nome: Un Componente incapsula una responsabilità UI coesa con stato dichiarato Descrizione: Ogni componente ha un'unica responsabilità di presentazione e gestisce uno StatoApplicativo esplicito tramite reattività. Lo stato non è mutato direttamente ma aggiornato in modo controllato, così che il rendering rifletta sempre lo stato corrente. Motivazione: Garantire prevedibilità del rendering e riusabilità dei componenti. Priorità: ALTA Attori: Frontend Developer Tracciabilità: glossary "Componente", "Reattività", "Web Component"; state-machines/componente-lifecycle.md.

---

BR-002 - L'accessibilità è un requisito, non un'aggiunta

Codice: BR-002 Nome: Ogni Componente interattivo soddisfa i criteri WCAG applicabili Descrizione: I componenti usano HTML semantico, ruoli e attributi ARIA corretti, sono navigabili da tastiera e mantengono un contrasto adeguato. Una A11yAnnotation documenta i requisiti di accessibilità; una violazione rilevata è un difetto da correggere. Motivazione: Garantire l'uso del prodotto a tutti gli utenti, incluse le tecnologie assistive. Priorità: ALTA Attori: Frontend Developer, UX Designer, Screen Reader Violazione: AccessibilityViolationRilevata; il componente non è considerato completo. Tracciabilità: glossary "Accessibilità (a11y)", "ARIA", "Progressive Enhancement"; events/domain-events.md.

---

BR-003 - Il budget di performance è rispettato

Codice: BR-003 Nome: Il caricamento rispetta i Core Web Vitals e il budget di bundle Descrizione: Le pagine rispettano soglie di LCP, CLS e INP e un budget di dimensione dell'AssetBundle. Tecniche come lazy loading, code splitting e tree shaking riducono il payload; il superamento del budget genera un allarme. Motivazione: Garantire un'esperienza veloce e stabile, cruciale per UX e SEO. Priorità: ALTA Attori: Frontend Developer, Browser Violazione: PerformanceBudgetSuperato; ottimizzazione richiesta prima del rilascio. Tracciabilità: glossary "Core Web Vitals", "Largest Contentful Paint (LCP)", "Cumulative Layout Shift (CLS)", "Interaction to Next Paint (INP)", "Lazy Loading", "Tree Shaking".

---

BR-004 - Il rendering server-side preserva l'idratazione corretta

Codice: BR-004 Nome: Il markup SSR e quello client coincidono per un'idratazione senza mismatch Descrizione: Quando si usa Server-Side Rendering, il markup generato sul server deve coincidere con quello che il client produrrebbe, così che l'Hydration non causi flicker o mismatch. Le API solo-browser sono usate solo dopo l'idratazione. Motivazione: Evitare layout shift, errori di idratazione e regressioni di performance. Priorità: ALTA Attori: Frontend Developer, Browser Tracciabilità: glossary "Server-Side Rendering (SSR)", "Hydration", "Client-Side Rendering (CSR)", "Critical Rendering Path".

---

BR-005 - La navigazione tra route è prevedibile e accessibile

Codice: BR-005 Nome: Ogni RouteAngular gestisce caricamento, errore e focus in modo coerente Descrizione: La navigazione tra route mostra stati di caricamento espliciti, gestisce gli errori senza rompere l'applicazione e ripristina il focus per gli utenti da tastiera/screen reader. Le route possono essere lazy-loaded per ridurre il bundle iniziale. Motivazione: Garantire un'esperienza di navigazione fluida e accessibile. Priorità: MEDIA Attori: Frontend Developer, Screen Reader Tracciabilità: glossary "Single-Page Application (SPA)", "Lazy Loading"; events/domain-events.md evento RouteNavigata.

---

BR-006 - Il contenuto è indicizzabile e ha metadati SEO corretti

Codice: BR-006 Nome: Ogni pagina espone SEOMetadata coerenti e contenuto indicizzabile Descrizione: Le pagine forniscono title, description, canonical, dati strutturati e, dove serve, contenuto renderizzato lato server per l'indicizzazione. I metadati riflettono il contenuto reale della pagina e sono univoci per route. Motivazione: Garantire visibilità nei motori di ricerca e corretta condivisione social. Priorità: MEDIA Attori: Frontend Developer, UX Designer Tracciabilità: glossary "Server-Side Rendering (SSR)", "Static Site Generation (SSG)"; BR-004.

---

BR-007 - Il CSS è prevedibile e isolato per componente

Codice: BR-007 Nome: Gli stili di un Componente non perturbano gli altri Descrizione: Gli stili sono isolati per componente (scoping, Shadow DOM o convenzioni) per evitare leakage e conflitti di specificità. Il layout usa strumenti moderni (Flexbox, Grid) e proprietà personalizzate per la coerenza del design. Motivazione: Prevenire regressioni visive da effetti collaterali del CSS globale. Priorità: MEDIA Attori: Frontend Developer, UX Designer Tracciabilità: glossary "Shadow DOM", "Specificità", "CSS Grid", "Flexbox", "Proprietà personalizzate CSS", "Design Token".

---

BR-008 - L'input dell'utente è validato e protetto da XSS

Codice: BR-008 Nome: Il contenuto dinamico è sanificato prima di entrare nel DOM Descrizione: I dati dinamici riflessi nell'interfaccia sono codificati per il contesto e mai inseriti come HTML grezzo non fidato. L'input dell'utente è validato lato client come supporto, mentre la validazione autorevole resta lato server. Motivazione: Prevenire il cross-site scripting (XSS) e la corruzione dell'interfaccia. Priorità: CRITICA Attori: Frontend Developer, Browser Tracciabilità: glossary "DOM", "Virtual DOM"; OWASP XSS Prevention.