Sembra incredibile ma ho finalmente trovato il tempo e lo spunto per creare il mio nuovo sito.
Beh, in realtà non è che abbia creato molto.

Crescendo, sia personalmente che lavorativamente, ho cambiato i miei gusti.

Inizialmente il mio sito, marcogiannini.net, era un WordPress.
Un WordPress con un tema costruito da me completamente custom utilizzando la libreria Materialize.css. Erano gli inizi della mia carriera, avevo un sacco di tempo a disposizione.

Puntavo ad avere un sito super ottimizzato, velocissimo e bello (almeno in modo soggettivo) e credo che ci riuscii.
Ottimizzato lo era, velocissimo anche e, beh, "Ogne scarrafone è bell' a mamma soja".
Lo adoravo.

Risultati raggiunti sull'ignobile Google Page Speed Insight

Ma come sempre, la smania non passa mai e, pochi mesi dopo aver completato il sito, lo distrussi completamente ripartendo da zero.

Stavolta però non mi andava di sviluppare un nuovo tema e decisi quindi di acquistarne uno.
Scelsi accuratamente quello che più si addiceva alla mia idea di design "figo" di quei tempi e lo acquistai.

Popolai il sito velocemente, come un bambino quando scarta il regalo di Natale che ha sempre voluto. Appena finii di caricare i progetti che avevo fatto fino a quel momento lo iniziai a abbandonare.

Solo dopo un annetto e qualche mese ho capito perché lo scartai:

Il sito era colmo di progetti molto simili fra loro e che non mostrassero davvero le mie capacità e i miei interessi. Oltre questo il sito era molto più simile a quello di un'agenzia anziché a quello di uno sviluppatore.

Ed è qui che ho deciso di fare, spero per l'ultima volta, una nuova ricerca di design cercando qualcosa di molto più semplice. Un sito senza molti preamboli dove poter inserire tutti i progetti che reputo più interessanti e stimolanti.

Ecco che quindi nasce l'idea di caricare il sito su Github Pages. Requisito fondamentale per poterlo caricare: sito in HTML, CSS e JS. Niente web server a gestire tutto.

La scelta di Ghost

Così ho scelto Ghost, un Headless CMS basato su Node.js.
Ghost è una piattaforma open source, professionale basata su Node.js.

È pensato per teams che hanno bisogno di potenza, flessibilità e performance. Alla sua base Ghost è basato su RESTful JSON API con admin client e front-end completamente separati. È possibile gestire come vogliamo il front-end ma, Ghost, esce di default con Handlebar.js per poter ottenere un sito online il più velocemente possibile.

Il problema di Ghost di base è che ha bisogno di Node per funzionare, quindi non potremmo di base caricarlo su Github Pages.
Qui entra in scena Ghost Static Site Generator (GSSG). GSSG permette di esportare tutto ciò che è stato creato su Ghost in una cartella composta da files statici.

A tool for generating static sites from ghost blogs. This is based loosely on buster but since that project has been abandoned I've decided to create a new tool.

There are many reasons for wanting to generate a static site. For example security. It's also possible to integrate this tool into a ci process and deploy the generated site.

Grazie a GSSG ho ottenuto i file statici del mio Ghost e ho potuto effettuare l'upload si Github.
Quindi mi basta ogni volta che scrivo un nuovo articolo su Ghost in locale, effettuare la "compilazione" di Ghost ed effettuare il git push sulla mia repository.

Modifiche online in tempo record.

Un piccolo esempio dei comandi utilizzati per scrivere e pubblicare online un nuovo articolo.

Come ho scritto qualche riga sopra, voglio caricare su questo mio portfolio solo i progetti che reputo più interessanti, volti a studiare un linguaggio piuttosto che per approfondire uno strumento che già conoscevo.

Ecco i tre progetti che ho scelto di caricare per la messa online del sito. Ce ne saranno sicuramente molti altri, spero, ma questi sono quelli che reputo più interessanti. Se ne avete voglia potete consultarli.

🔗 Tinson 🤖 - Un title manager per Tinfoil fatto con Node e ❤️
🔗 Pokemon Quest Wiki App: La mia prima app in Cordova 👾
🔗 Snake in JavaScript 🐍

Crediti e strumenti utilizzati

🔗 https://www.npmjs.com/package/ghost-static-site-generator
🔗 https://ghost.org
🔗 https://en.wikipedia.org/wiki/Headless_content_management_system