Lavorando da freelance ho capito che negli svariati anni da dipendente non avevo dedicato il giusto tempo e peso alla programmazione.
Vivevo lo sviluppo come una fonte di reddito e la mia passione nel programmare stava svanendo. Serviva dare una svolta e tra i buoni propositi del 2023 ho messo in lista la crescita del mio brand personale, la pubblicazione di codice open source, lo studio di nuove tecnologie.
Una delle azioni che dovevo compiere in merito alla prima voce era sicuramente creare un mio sito web per raccontare cosa significa per me programmare e condividere la mia esperienza.
Ho quindi cominciato a cercare uno strumento semplice agile e futuribile, da proporre possibilmente anche ai clienti.
Tutto questo cercando qualcosa che seguisse anche le ultime mode e novità per non rimanere indietro rispetto a quello che viene proposto anche dal resto del mondo.
E’ iniziata così una selezione e ricerca di cms open source e Saas per gestire contenuti editoriali esposti tramite API ed utilizzabili da PWA basate su framework o librerie Javascript quali React, Vue, Angular, …
Alla fine sono finito, cercando e parlando con colleghi, per imbattermi in Frontity.
Sul sito ufficiale frontity.org leggiamo che Frontity è lo strumento più semplice e veloce per creare siti web con ottime prestazioni utilizzando wordpress e react.
Ora… da sviluppatore ho sempre snobbato wordpress e continuo a farlo vedendone i limiti.
Tuttavia bisogna considerare sempre i pro ed i contro di una tecnologia, sia nel valutarla e recensirla, sia a maggior ragione nell’adottarla.

PRO di wordpress:
– è la piattaforma cms più utilizzata e conosciuta al momento
– ha una gestione wysiswyg dei contenuti invidiabile
– è seguito da una community attiva che ha creato nel tempo estensioni per qualunque necessità (il più delle volte con codice scadente, ma c’è oggettivamente di tutto)

CONTRO di wordpress:
– Non utilizza composer nonostante sia un software scritto in PHP
– Non supporta nativamente funzionalità multilingua
– Non è stato scritto basandosi su framework PHP (vedi Symfony, Laravel, Zend, …)
– I plugin sono scritti male molte volte e scriverne oltre a non essere gratificante è pure astruso.

Ciò che si può evincere da questa brevissima analisi (anche se potrebbe essere sicuramente approfondita) è che wordpress è una piattaforma che si rivolge maggiormente a utilizzatori che non programmano (e magari nemmeno vogliono sentirne parlare) ed invoglia al plug-and-play selvaggio, cosa che comporta spesso grandi problemi di aggiornamento della piattaforma e smantellamenti per poterlo manutenere.
Non è uno strumento che si predispone per gli sviluppatori, tuttavia è conosciuto un po’ da tutti (chi lo adora e chi lo odia per i punti riportati sopra) ed è innegabile che fonda il suo successo, e lo mantiene nel tempo, grazie alla sua semplicità di utilizzo ed al brand che ormai è molto diffuso ed affermato.

Ebbene, l’utilizzo di frontity in congiunzione a wordpress con alcuni accorgimenti azzera (o quasi) i punti a sfavore nel momento in cui serve per progetti medio/piccoli di tipo “editoriale”:
1) La voce “non utilizza composer” la si risolve con un accorgimento… a volte, anche se non ce li meritiamo, ci sono super eroi che lavorano nell’ombra. Questo è il caso di Roots che tra i vari progetti propone anche Bedrock, un boilerplate per utilizzare wordpress con una struttura di cartelle differente ma soprattutto portando all’interno pacchetti e dipendenze tramite composer e wp-packagist.
2) Utilizzando frontity non dobbiamo porci il problema di sviluppare ed estendere le funzionalità di wordpress sviluppando spaghetti-code in esso, ma possiamo utilizzare le API di wordpress per quello che interessa il CMS (blog, pagine CMS) e le API di altre piattaforme per ciò che non vogliamo dover scrivere o pluggare.
Ad esempio sto, di fatto, scrivendo un middleware con Laravel che fa da proxy davanti a wordpress per sviluppare funzionalità aggiuntive direttamente sul framework ed utilizzare il suo sistema di routing, ma merita un articolo a parte.
3) Con frontity possiamo riferirci a più siti contemporaneamente, quindi utilizzare wordpress in varie istanze in lingua (IT, EN, …) e ricavare i contenuti localizzati via API da una o all’altra istanza a seconda di cosa vogliamo mostrare sulla nostra PWA.

In soldoni mi sono ritrovato con uno strumento agile, performante e moderno per sviluppare il frontend di siti istituzionali e/o web app mantenendo un buon editor wysiswyg per il cliente tramite wordpress pur mantenendo la possibilità di scrivere funzionalità più avanzate in maniera stabile e manutenibile tramite Laravel.
Va da se che non si deve comunque customizzare wordpress selvaggiamente… ci vanno installati solo pochi plugin tramite composer (è il caso ad esempio di Advanced Custom Fields che ci torna molto utile per esporre via API attributi e sezioni peculiari di pagine e/o post). Per tutto il resto c’è Laravel.

Il mio sito personale su cui stai leggendo questo articolo è la prima prova nell’utilizzo di questo mix di tecnologie, non ha richiesto endpoint custom con Laravel perchè è molto semplice, tuttavia è stato un buono caso di studio!
Puoi trovare riferimento sul mio github del codice utilizzato per questo progetto lato
– frontend: https://github.com/dadolun95/cms-frontity-fe
– backend: https://github.com/dadolun95/cms-frontity-be
Bentornato wordpress, era da tanto che non ti tenevo più in considerazione 🙂