Salta al contenuto principale
Portfolio

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 sito
Ruolo
Progettazione e sviluppo full-stack
Committente
Space42 Europe · progetto EU LIFE
Periodo
2026
Stato
Online su life-mapper.eu

Il 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.

Schermata della knowledge platform di Life Mapper, con la barra di ricerca e i filtri a faccette nella colonna laterale.
La knowledge platform: ricerca a faccette sui contenuti pubblicati dalla redazione.
Schermata dell’elenco pubblicazioni di Life Mapper, con titolo, autori e riferimenti per ogni voce.
L’elenco delle pubblicazioni: i metadati arrivano dal DOI, non trascritti a mano.

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.

  1. 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.

  2. 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.

  3. 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.