# 24 — App pubblica: blog Leggi `CLAUDE.md`. ## Obiettivo Elenco, ricerca e dettaglio articoli. ## Cosa fare - `/blog`: lista paginata con filtro categoria e campo ricerca (query param `q`, debounce), stato vuoto. - `/blog/:slug`: render dell'`content_html` già sanitizzato dall'API, immagine copertina, data, categoria, articoli correlati (stessa categoria), CTA verso configuratore. - SEO: meta da `seo_title`/`seo_description`, JSON-LD `Article`, canonical, paginazione con link corretti. - 404 reale (status code 404 lato SSR) per slug inesistente. ## Criteri di accettazione - Ricerca, filtri e paginazione sono riflessi nell'URL e funzionano con refresh e SSR. - Slug inesistente → risposta HTTP 404. - `CLAUDE.md` aggiornato.