Skip to content
12Caso studioSW · 12 di 10

Un sito vetrina mantenuto per quattro anni senza riscritture, per un'organizzazione della società civile senza team web.

Un'organizzazione umanitaria europea della società civile è cresciuta da un giorno all'altro all'inizio del 2022. Abbiamo costruito il loro sito pubblico in due settimane, poi per quattro anni ci abbiamo fatto pochissimo. Quella misura è stata il lavoro.

ClienteRiservato
Anno2022 — 2026
Durata5 yrs
StackTypeScript · Next.js · React · Vercel
Hero image for humanitarian-aid-brand-siteFIG 01 · HERO

Un sito per un'organizzazione il cui mestiere non è il sito.

Il cliente è una piccola organizzazione umanitaria europea della società civile, cresciuta da una rete della diaspora a un'operazione di aiuto attiva dopo il febbraio 2022. Quando abbiamo iniziato, coordinavano la consegna di forniture, l'alloggio per gli sfollati e l'attrezzatura per i soccorritori in prima linea. Il sito web era l'ultima cosa a cui chiunque pensasse — ed era esattamente la priorità giusta.

Nessun team web. Nessun product manager. Nessuno il cui compito fosse scrivere ticket, approvare testi o accudire un CMS. Il brief non era un brief di prodotto. Era un brief infrastrutturale: dateci un volto pubblico che risponda alla domanda «chi siete e come posso aiutare?», e poi non costringeteci a pensarci di nuovo.

Quel vincolo ha plasmato ogni decisione successiva.

Due settimane. Bilingue. Nessun CMS.

Abbiamo pubblicato il sito iniziale in circa due settimane, in concomitanza con la spinta operativa di metà 2022. Next.js su Vercel, Tailwind CSS, React. Bilingue fin dal primo giorno — inglese e la lingua nativa dell'organizzazione — usando il routing i18n nativo di Next.js, senza librerie di terze parti.

La decisione sui contenuti è stata deliberata: nessun CMS. Niente Sanity, niente Contentful, niente Strapi. Tutti i contenuti — descrizioni dei progetti, elenchi di partner, aree di intervento, livelli di donazione — risiedono in oggetti TypeScript tipizzati in /data/<locale>/, sotto controllo di versione insieme al codice. Aggiornare un testo è un commit git. Non c'è alcun login, alcuna interfaccia di editor, alcuna pipeline di deployment su cui il team dovrebbe essere formato.

Abbiamo anche tralasciato: librerie di animazione, route API, un database a runtime, un livello di rate limiting, una superficie di autenticazione personalizzata. Niente di tutto questo era necessario. Il flusso di donazione va su binari di donazione dedicati esterni al sito. Il compito del sito è informare e indirizzare, non transare.

Generazione statica ovunque. La build produce HTML. Vercel lo serve. L'unica cosa che può andare storta è una build che fallisce — e le build non svegliano nessuno alle 3 del mattino.

F · 01Sito statico bilingue
Inglese e la lingua nativa dell'organizzazione fin dal primo giorno. Routing i18n nativo di Next.js, piena parità dei contenuti, nessuna libreria i18n di terze parti.
F · 02Contenuti come codice
Tutti i testi risiedono in oggetti TypeScript tipizzati in /data/<locale>/, sotto controllo di versione. Nessun login al CMS, nessuna interfaccia di editor, nessuna pipeline di deployment da imparare.
F · 03Generazione statica ovunque
Ogni pagina pre-renderizzata al momento della build. Nessuna route API, nessun database a runtime, nessuna reperibilità per l'infrastruttura.
F · 04Due major di Next.js attraversate
Il codice è passato da Next.js 12 a 14 a 16 senza una riscrittura. Scelte di stack che invecchiano bene.
F · 05Modalità scura tramite classe CSS
Zustand mantiene lo stato del toggle; localStorage lo conserva. Nessun lampeggio al ricaricamento. Nessuna libreria di theming di terze parti.
F · 06Zero riscritture in quattro anni
L'architettura disegnata nello sprint iniziale è l'architettura in produzione oggi.

Dodici mesi di silenzio, poi un solo commit.

Dopo lo sprint iniziale: silenzio. Da agosto 2022 a maggio 2023, il codice non ha ricevuto alcuna modifica. Il sito ha tenuto. L'organizzazione stava consegnando aiuti. Era lo stato delle cose corretto.

Giugno 2023: un commit. Analytics. Luglio 2024: nove commit. Un piccolo sprint di manutenzione — aggiornamento di Next.js, sostituzione di una libreria di carosello, igiene delle dipendenze. Niente di strutturale.

Marzo–aprile 2026: la revisione attuale. Un refresh del design, una passata completa per il mobile, la migrazione a Tailwind v4, miglioramenti SEO. Il codice ha attraversato due major di Next.js — dalla 12 alla 14 alla 16 — senza una riscrittura.

240 commit in quattro anni. Lo schema a raffiche è onesto: gran parte del lavoro è avvenuta all'inizio, e poi alla fine. Il lungo intervallo centrale era il sito che funzionava.

La giusta quantità di ingegneria per un'organizzazione della società civile è quella che scompare.

Il sito non è stato un problema a cui l'organizzazione abbia dovuto pensare. Questo è il risultato. Non un tasso di conversione, non un tasso di rimbalzo — l'assenza del sito come fonte di attrito.

Lo stesso codice pubblicato nel 2022 è il codice in produzione oggi. Lo stesso team che l'ha costruito lo mantiene. Nessun trauma da migrazione, nessuna conversazione del tipo «dobbiamo ricostruirlo su uno stack moderno», perché lo stack è stato scelto con cura sufficiente da restare moderno senza interventi costanti. Bun ha sostituito Node come runtime. Biome ha sostituito ESLint e Prettier. Tailwind v4 ha sostituito la v3. Tutto è stato additivo — nessun debito architetturale da sbrogliare.

Quattro anni. Due major di Next.js attraversate (12 → 14 → 16). Zero riscritture. 240 commit. Un solo team.

Citazione / 04
Il sito non è stato un problema a cui abbiamo dovuto pensare.
DirettoreOrganizzazione umanitaria della società civileEuropa
Outcome
Initial sprint
~2 weeks
Years in production
4
Next.js majors crossed
2 (12 → 14 → 16)
Commits over four years
240
NEXTCaso studio 13SW · 13 di 10
E-commerce2026

Commercio su ordinazione per un mercato che ha bisogno del proprio stack.