01 · CONTESTO
La sfida
L'autore aveva quattro raccolte pubblicate e nessun luogo online che le tenesse insieme: chi cercava il suo nome trovava schede di e-commerce sparse, non lui. Servivano tre cose difficili da conciliare. Primo, una **versione inglese vera**, non una traduzione automatica, perché dopo anni vissuti tra Regno Unito, Stati Uniti e Venezuela una parte dei suoi lettori non è italiana. Secondo, la possibilità di **pubblicare un aforisma o un articolo senza chiamare noi**: un sito che richiede uno sviluppatore per ogni riga di testo smette di essere aggiornato dopo un mese. Terzo, far capire ai motori di ricerca **chi è** e **cosa ha scritto**, in modo che il nome e i titoli delle raccolte diventino risultati riconoscibili invece che stringhe ambigue.
02 · APPROCCIO
La soluzione
Sito **Next.js 16 in App Router con React 19**, deployato su Vercel. L'internazionalizzazione è gestita con **next-intl** in modalità `as-needed`: l'italiano resta sulla radice del dominio, l'inglese vive sotto `/en`, e ogni pagina dichiara gli `hreflang` reciproci più `x-default`. I contenuti non sono nel codice: stanno in **Supabase**, con tabelle separate per libri, articoli, blocchi di biografia e aforismi, e con Storage per copertine, immagini degli articoli e galleria. Ogni record porta il testo in entrambe le lingue, così la versione inglese è scritta dall'autore e non generata. L'aforisma del giorno usa una funzione RPC lato database che restituisce il testo per una data specifica: la home ne pre-renderizza uno, e il selettore data lo aggiorna con una server action, senza spedire al browser l'intero archivio. Le pagine sono **prerenderizzate con ISR a un'ora**, quindi una pubblicazione compare da sola senza redeploy, e se Supabase non risponde durante il build la sitemap ricade sulle pagine statiche invece di rompere la compilazione. Sul fronte SEO abbiamo implementato dati strutturati tipizzati con schema-dts: **Person** e **WebSite** collegati tra loro, **Book** su ogni scheda libro, **BlogPosting** sugli articoli, **BreadcrumbList**, **CollectionPage** sugli elenchi e **ImageGallery** sulla galleria. Immagine Open Graph e icona Apple sono generate a runtime con `ImageResponse`, quindi vivono nel codice e non come file da rifare a mano. La galleria usa un lightbox accessibile e il carosello dei libri è scritto a mano con CSS Grid e scroll nativo, senza librerie di slider.
03 · RISULTATO
L'impatto
Il sito è in produzione su **www.baldassarredavino.com** e pubblica **13 URL per lingua, 26 pagine prerenderizzate in tutto**: sei pagine fisse, quattro schede libro e tre articoli, ciascuna con la propria versione inglese e i propri dati strutturati. Ogni raccolta ha una pagina indicizzabile con descrizione, copertina e link d'acquisto, invece di esistere solo dentro un marketplace. L'autore aggiunge un aforisma, un articolo o una foto e la pagina si aggiorna entro un'ora: dalla messa online non abbiamo dovuto rimettere mano al codice per pubblicare un contenuto.



