I vantaggi di un sito statico sono ben noti: sicurezza, velocità e semplicità. In Plurimedia abbiamo spesso scelto questa tecnologia per realizzare siti di piccole e medie dimensioni. Il più grande limite di questa tecnologia è ovviamente l’assenza di un backend redazionale per l’aggiornamento dei contenuti. Si tratta quindi di risolvere tre problemi:

  • Realizzare un cms flessibile, affidabile e facile da usare
  • Realizzare un generatore di siti statici
  • Integrare le due componenti

Il primo punto richiederebbe uno sforzo di sviluppo considerevole. In sostanza si tratterebbe di rifare (meglio) Drupal, togliendo la parte di presentazione. È possibile ovviamente usare Drupal “headless”, ovvero solo come gestore di contenuti. Questo richiederebbe ovviamente la completa gestione del cms, e la sua manutenzione nel tempo.

Fortunatamente esistono diverse soluzioni SaaS (software as a service) come Prismiq e Contentful.
Scegliere un SaaS non è mai semplice. Deve rispondere a tutti i requisiti, avere prezzi sostenibili con un piano gratuito generoso, e sdk affidabili e ben documentate.
Contentful si è dimostrato molto valido: permette di creare strutture arbitraie — come i content-type di Drupal — con un’interfaccia veloce e semplice da usare. Ha anche un’ottima gestione delle immagini. Una volta caricato un master, di possono avere infiniti derivati grazie ad un semplice url.

Content type Contentful
La gestione dei content type in Contentful

Per quanto riguarda il secondo punto, fortunatamente esistono già diverse soluzioni valide, come Jekyll, Gatsby, Hugo. Anche qui però è difficile trovare una soluzione ideale, oguno di questi generatori di siti statici ha i suoi pregi e i suoi difetti. Abbiamo quindi deciso tempo fa di realizzare il nostro basato su Grunt.

Come integrare le due componenti? Fortunatamente ci viene incontro Netlify, un servizio di hosting studiato per questi workflow di sviluppo moderno. Il deploy di un sito non è mai stato così semplice. Si decide quale repository collegare, e ad ogni push viene lanciato il processo di build. Ma non finisce qui.

Dopo aver creato il sito, Netlify ottimizza automaticamente tutte le risorse — css, immagini e js —, e crea url senza l’estensione .html. Non solo, ci permette si inserire snippet, es. il codice di analytics, aggiungere form e molto altro. In questo modo il builder non deve farsi carico di tutti questi processi.

Netlify
Il pannello di controllo di Netlify

Netlify, infine, mette a disposizione dei “Build hooks” ovvero degli url da chiamare per lanciare il processo di build. Qui entra in gioco l’integrazione con Contentful che ci mette a disposizione dei “Webhooks”, grazie ai quali possiamo chiamare Netlify ogni volta che un contenuto viene pubblicato. Nel momento in cui il redattore pubblica un nuovo contenuto, il sito verrà aggiornato automaticamente.

Il nostro sito è bastato su questa integrazione. Ad oggi siamo molto soddisfatti, anche perché per siti di piccole-medie dimensioni si riesce a stare nei piani gratuiti di entrambe le piattaforme.