Laravel Nova è uno strumento per sviluppare un pannello di amministrazione, basato sul Framework Laravel. Consente di creare un admin panel che offra le cosiddette funzionalità CRUD o BREAD (Browse, Read, Edit, Add, Delete) [decisamente preferisco usare BREAD invece che CRUD 😂 ].
Sono mesi alla ricerca di un buon pannello di amministrazione per applicazioni sviluppate in Laravel, ne esistono decine e decine, qui ad esempio c’è una lista di 13 Admin Panel Generators:
https://laravel-news.com/13-laravel-admin-panel-generators
Sarebbe da intraprendere una discussione dedicata su come scegliere un pannello di admin, in base alle proprie competenze di sviluppo, in base alla flessibilità che si vuole ottenere, ecc…
Ora però vorrei concentrarmi su Laravel Nova ed elencare una serie di funzionalità che ho trovato particolarmente interessanti e che hanno permesso di farlo spiccare sopra gli altri analizzati. (E’ una scelta molto personale, andrebbe calata sul progetto e sulla propria esperienza con Laravel)
Contenuti dell'articolo
Questa è la documentazione, fatta molto bene e che contiene tutti i dettagli che vado ad elencare di seguito: https://nova.laravel.com/docs/
C’è anche questo piccolo corso che spiega tutte le funzionalità, se si vuole una panoramica generale prima di procedere all’acquisto: https://laracasts.com/series/laravel-nova-mastery
Sviluppato dai creatori di Laravel
Affidarsi ad un framework esterno per implementare la parte di amministrazione dei dati in una webapp, significa creare un vero e proprio matrimonio tra l’applicazione e la “libreria” utilizzata, quindi si condividerà tutto, funzionalità e bug. Se quest’ultimi non vengono corretti e la libreria viene abbandonata sono uccelli per diabetici.
Per questo motivo, il fatto che Laravel Nova sia sviluppata e supportata dagli stessi creatori di Laravel è sicuramente un punto a favore in più rispetto a tutti gli altri Admin Panel.
Non intacca la struttura esistente
Un’altra caratteristica, secondo me fondamentale, che rende molto flessibile Nova, è la sua completa indipendenza dall’attuale struttura dell’applicazione alla quale si vuole agganciare il pannello di amministrazione. Infatti Nova per funzionare non ti fa modificare i Model e i Controller già esistenti, ma ha una sua struttura di configurazione totalmente indipendente, che “si basa” sui model esistenti, ma all’atto pratico non si dovranno toccare i file esistenti, solo specificare quali risorse sono collegati a quali Model.
Questo consente di inserirlo anche a progetto concluso o in corso d’opera, rimuoverlo in qualsiasi momento, senza impattare minimamente sulla webapp.
https://nova.laravel.com/docs/3.0/resources/#defining-resources
Tantissime tipologie di campi (fields) supportati
Andrebbero riportati tutti, ma sono veramente tanti i campi supportati per la creazione dei form e delle tabelle per implementare tutte le funzionalità BREAD. Dai semplici campi di testo, avatar, immagini, file, badge, date e datetime, select, campi TEXT con Rich Text Editor e tantissimi altri.
Veramente mi ha stupito la quantità di campi già supportati e che quindi con due istruzioni si riescono a configurare.
https://nova.laravel.com/docs/3.0/resources/fields.html
In perfetta simbiosi con Laravel
Una delle pecche che ho riscontrato in altri Admin Panel, è la gestione delle relazioni, per capirci tutti gli HasOne, HasMany, BelongsTo, ecc, ecc… In Laravel Nova sono tutte supportate e tutte gestite in maniera automatica. Perfino il MorphTo, che potrebbe essere più ostico da gestire, viene gestito automaticamente e con delle chicche molto carine.
https://nova.laravel.com/docs/3.0/resources/relationships.html
Filtri, ricerche e azioni sulle tabelle
Altra caratteristica di spicco è la possibilità di personalizzare i filtri delle tabelle, creare delle viste personalizzate con query personalizzate, andando comunque a sfruttare tutte le funzionalità BREAD su quei dati e anche di aggiungere delle azioni sulle righe delle tabelle, sia in modalità singola riga o in modalità di selezione multipla.
https://nova.laravel.com/docs/3.0/search/global-search.html
Admin Panel flessibile e personalizzabile
Spesso, quando un framework rende le cose veramente facili, si rinuncia sempre ad un po’ della sua estensibilità e flessibilità. Quello che mi ha impressionato in Laravel Nova è proprio la possibilità di implementare facilmente funzionalità BREAD sui dati, ma allo stesso tempo estenderlo con Dashboard personalizzate, Campi (Fields) personalizzati, viste personalizzate di dati e di relazioni, addirittura si possono aggiungere intere pagine, chiamate Tools, dove ci si può inserire il proprio codice Javascript (usano VueJS) e CSS per sviluppare strumenti dedicati, disponibili sempre tramite il pannello di admin fornito da Laravel Nova.
https://nova.laravel.com/docs/3.0/customization/tools.html
Quanto costa Laravel Nova?
Per soli 99$ si porta a casa uno strumento (per singolo progetto), che ti permette di risparmiare ore e ore di sbattimenti su operazioni noiosissime. Poi il fatto che sia a pagamento e non gratuito ci garantisce un discreto supporto da parte degli sviluppatore e sicuramente una costante manutenzione.