Sviluppo
Life Mapper
Una piattaforma dove chi fa ricerca sul mare pubblica il proprio materiale da solo, e chi lo cerca lo trova.
Vedi il sitoIl problema
Il materiale di un progetto di ricerca europeo tende a vivere sparso: i documenti su un sito, i dataset da un’altra parte, le mappe in un terzo posto. Chi lo cerca non lo trova, e chi lo produce deve passare da uno sviluppatore ogni volta che vuole pubblicare qualcosa.
Serviva un posto solo, aggiornabile dalla redazione, capace di reggere contenuti di natura molto diversa fra loro — pubblicazioni, risorse, materiali di progetto — e pronto ad accogliere le traduzioni quando arriveranno.
Il risultato
Un sito pubblico e una knowledge platform con ricerca a faccette sui contenuti. La redazione pubblica in autonomia dal CMS, senza intermediari tecnici.
I metadati bibliografici si compilano da soli a partire dal DOI: meno lavoro manuale e, soprattutto, meno errori di trascrizione nei riferimenti.
Com’è fatto
Monorepo con frontend Astro 6 (SSR per le pagine che dipendono dai dati, statico dove non serve), Directus 11 self-hosted come CMS, PostgreSQL con estensione PostGIS per i filtri spaziali e Meilisearch per la ricerca.
L’indice di ricerca non si aggiorna a mano: un worker ascolta i webhook di Directus e reindicizza. La configurazione specifica del progetto — codelist, tassonomie, lingue, branding — sta in un layer a parte, separato dal codice della piattaforma.
Il modello dei contenuti prevede le traduzioni e il CMS le gestisce, ma il sito è oggi pubblicato in inglese: la configurazione delle rotte dichiara una sola lingua.
Il geoportale linkato dal sito è un’applicazione cartografica di terze parti ospitata dal CNR ISMAR: non fa parte di questo lavoro.
- Frontend
- Astro 6Tailwind CSS v4SSR + SSG
- Backend
- Directus 11PostgreSQL + PostGISMeilisearch
- Infra
- VPSDocker ComposeReverse proxy
Decisioni
Ogni scelta qui sotto ha avuto un prezzo. Elencarle senza dire cosa costano le farebbe sembrare gratuite, e nessuna lo è stata.
-
Una piattaforma riusabile, non un sito su misura
Tutto ciò che è specifico di questo progetto vive in un layer di configurazione separato, così lo stesso impianto può reggere un secondo portale di ricerca senza riscritture.
Cosa è costato Un’astrazione da mantenere anche finché il progetto è uno solo. Si paga subito e si incassa forse.
-
La ricerca fuori dal database
Un motore dedicato invece di query di ricerca su Postgres: faccette e multilingua sono il suo mestiere, e le prestazioni non degradano col crescere dei contenuti.
Cosa è costato Un servizio in più da far girare e uno stato da tenere allineato — da cui il worker sui webhook, che è codice esistente solo per questo.
-
Permessi nativi del CMS invece che scritti a mano
Ruoli, policy e visibilità per istituzione sono configurati dentro Directus invece di essere reimplementati nell’applicazione.
Cosa è costato Ci si adatta al modello della piattaforma. In cambio non esistono due punti dove decidere chi può vedere cosa — che è il modo classico di far divergere i permessi.