17 Aprile 2011

Nanoc, questo sito e prodotti derivati vari

Per un sito estremamente nerd, ci vuole una piattaforma di pubblicazione estremamente nerd, mi sembra evidente. I miei bisogni erano fondamentalmente:

  • Rapidità nella scrittura;
  • Sintassi Markdown;
  • Possibilità di scrivere sia post “standard” che semplici link verso risorse esterne;
  • Codice pulito in uscita (HTML5);
  • Supporto per Compass, SASS e Slim;
  • Compressione automatica per gli assets Javascript;
  • Evitare totalmente qualsiasi problema di mantenimento della piattaforma (il tempo lo voglio dedicare per scrivere, grazie);

Mi è sembrato naturale dirigermi verso i vari progetti di generazione statica di siti web . Con questi tools, i post possono essere scritti su semplici file Markdown e backuppati su Github. Non ci sono security holes da gestire, nessun login/logout. Il deploy equivale semplicemente a lanciare un rsync remoto.

Fidandomi tendenzialmente del popolo di Github sono andato diretto su Jekyll, il pioniere nel campo. Son partito con entusiasmo, ma purtroppo non è andata come speravo: sebbene scritto bene, non è modulare a sufficienza per permettere troppe personalizzazioni. Avrei potuto forkare Jeckyll e modificarlo, ma non desiderando futuri problemi di mantenimento sono andato alla ricerca di alternative.

Alla fine sono approdato su Nanoc, un progetto non così popolare, ma a mio parere decisamente valido, sicuramente molto più modulare:

  • Permette di creare i propri filtri di conversione da file testuale a codice HTML, con possibilità di concatenazione multipla;
  • Permette di creare moduli helpers aggiuntivi per rendere più DRY le viste;
  • Permette di implementare anche dei Data Sources alternativi: questo vuol dire che i post possono essere salvati su file, ma non necessariamente. E’ ad esempio possibile creare post da Twitter, Delicious o LastFM in poche righe di codice.
  • Permette di realizzare diverse rappresentazioni dello stesso post (i.e. JSON, XML ed HTML)

Con un'architettura così ben pensata, è stato sufficiente creare un paio di moduli aggiuntivi per arrivare esattamente ai miei bisogni. In particolare, ho scritto:

Il codice sorgente del sito è disponibile su Github.. è immediato vedere che impostazione pulita riesce a regalare Nanoc.