Quando può esserci bisogno di un pannello di controllo custom per un certo software? Partiamo da una considerazione generale per poi andare a vedere dei casi specifici.
Niente di più semplice: il caos. Abbiamo tanti dati da gestire, esistono nella nostra banca dati in qualche forma, ma dobbiamo mostrarli al pubblico. Certo, i tecnici possono leggere CSV da 10mila righe, ma il pubblico? E con che criterio glieli mostro?
Se da una parte può venirci incontro un buon software, che da un lato presenta con un frontend piacevole e ordinato i nostri elementi, e dall’altro un backend solido che riesce a gestire la massa di dati che bisogna portare alla luce, per quanto utili possano essere questi strumenti, ancora non bastano. Abbiamo ancora bisogno di qualcosa che ci permetta di dare un ordine, di categorizzare, di permetterci di scegliere cosa mostrare e cosa nascondere.
Per fare queste cose ci sono i pannelli di controllo. Offrono numerosi strumenti, come le categorie, i tag, gli strumenti di ricerca, report sui dati gestiti e sistemi di ruoli e permessi per gli utenti del software.
Possono esserci uno o più utenti autorizzati ad accedere al nostro “retrobottega”, ed è possibile specificare cosa possono fare: per questo ci sono i sistemi di ruoli e permessi. Solitamente i permessi sono le singole cose che qualcuno può fare, come ad esempio “leggere gli articoli”, “cancellare un prodotto”, “bloccare un utente”. I ruoli, invece, sono collezioni di permessi. Ad esempio l’editor potrebbe essere colui che legge, scrive e cancella gli articoli, ma non ha accesso ad altre zone del pannello di controllo. Esiste di solito anche un superadmin al quale sono assegnati tutti i permessi possibili.
Questi utenti possono categorizzare, ordinare, eliminare e gestire degli elementi. Questi elementi possono essere svariati: dagli utenti finali del nostro software, a articoli, post, commenti e recensioni. In base alle esigenze questi elementi possono essere messi a disposizione dell’amministratore e gestiti all’occorrenza. Poter assegnare una categoria ad un determinato elemento può aiutare al suo filtraggio e, ad esempio, permettere ad un certo elemento di apparire per primo nel nostro software, oppure solo a determinati tipi di utenti. Potrebbe esserci un caso in cui vogliamo impostare una regola per mostrare un certo articolo solo a un gruppo preciso di utenti del nostro sito. Queste manipolazioni devono essere possibili in qualche punto del nostro software, e quel punto dedicato è proprio il backoffice.
Queste cose possiamo vederle nei pannelli di qualche WordPress o Magento. Ma quando ereditiamo un vecchio software, oppure ne facciamo uno da zero il quale però non può utilizzare questi framework, dobbiamo continuare ad avere un metodo per controllare e gestire i nostri dati. Esistono diversi approcci: in SocialCities ne usiamo principalmente due.
Il framework Django, scritto in linguaggio Python, porta con sé un comodo strumento, il Django Admin Site. Si tratta di un modulo presente in ogni applicazione e sottoapplicazione di un progetto Django dove è possibile generare un url che conduce a un pannello amministratore molto basilare. Questo pannello è per lo più un amministratore di database, ma ciò non toglie che con un po’ di accortezza e conoscenza tecnica offre già molte cose con cui poter lavorare.
Per chi programma è abbastanza rapido: i dati dal database vengono recuperati costruendoli su un preciso Modello che verrà condiviso da tanti altri componenti dell’applicazione, tra cui il pannello Admin. Indicando in un particolare documento quali modelli si vuole mostrare, è possibile organizzare in maniera abbastanza rapida un pannello di controllo facilmente accessibile ad un utente che voglia manipolare direttamente i dati dal database.
È possibile personalizzare ulteriormente i dati recuperati dal DB: non solo si può specificare di un certo modello quali campi mostrare e quali nascondere (ad esempio, dati sensibili, o flag tecnici che non bisognerebbe modificare a mano), ma si possono anche aggiungere estensioni al pannello admin Django di base. Bottoni, elementi grafici, decorazioni, ma anche funzionalità a supporto dell’utente.
Tra le librerie che è possibile utilizzare per estendere il Django Admin Site, riportiamo come esempio:
Come vedete le applicazioni e le estensioni di Django Admin Site sono variegate e si declinano per diversi scopi e utilizzi, variando in complessità d’uso e di realizzazione.
L’uso del Django Admin Site è più adatto a utenti tecnici e a siti dove occorre fare poche modifiche a poche tabelle di database, mentre è sconsigliato per tutti quei pannelli backoffice dove è necessario dare accesso a tanti utenti diversi, che magari hanno bisogno di accessi con ruoli e permessi, che hanno bisogno di modificare e visualizzare contenuti con una rielaborazione rispetto al database, invece che nudi e crudi così come vengono conservati.
Per fare tutte queste cose, invece, esistono altri strumenti, come quello che vedremo a breve.
In ambiente PHP invece troviamo Laravel. Questo framework è molto potente e flessibile, ma manca degli strumenti integrati di Django Admin Site. È possibile generare dei model che ricalcano la struttura del database, ma non è possibile far generare a Laravel un pannello che gestisca questi model in un frontend web come fa Django. Questo succede probabilmente perché in ambiente PHP esistono già numerosi strumenti di gestione web del database, come phpMyAdmin o adminer. Si tratta di strumenti leggeri e facili da usare che permettono la gestione diretta del database con un’interfaccia grafica. Inoltre è possibile scrivere query SQL direttamente nell’interfaccia e modificare il contenuto e la struttura del DB.
Se questi due strumenti appena citati coprono a modo loro le stesse necessità che soddisfa Django Admin Site di base, possiamo muoverci su un altra libreria dell’ecosistema Laravel: parliamo di Backpack, un template completo per i pannelli amministratore.
Backpack (ovvero “zaino”) è un nome con tutto un programma: si tratta di un template, quasi un framework, molto leggero e pieno di strumenti utili per realizzare un backoffice.
La libreria grafica presenta numerosi elementi: dei layout classici da pannello di controllo, con la barra a scomparsa sulla sinistra, dei menu e sottomenu con l’integrazione di diverse collezioni di icone, utili per tutte le esigenze. Sono supportati diverse librerie JavaScript per la visualizzazione di dati e grafici: l’immediata ChartJS, l’ottima e completa Highcharts o anche Echarts e tante altre.
Il pezzo forte di Backpack rimane la gestione dei modelli dal database. Sono integrati con la visualizzazione, e ognuno dei modelli ha un controller corrispondente che serve a visualizzare e editare i dati. Un sistema di campi e colonne permette di impostare la visualizzazione e la modifica con elementi grafici e funzionali personalizzati: barre di scorrimento, bottoni, tabelle di upload dei dati. Le liste possono essere ordinate, filtrate, possono avere elementi diversi e essere estese con strumenti per la modifica diretta in lista. Le schermate di modifica possono combinare più elementi in un elemento personalizzato per modificare più di un modello di database. Tanti strumenti per personalizzare e rendere più efficiente l’esperienza di navigazione e utilizzo del backoffice.
Gestire un sito dinamico e complesso con utenti e una grossa quantità di dati richiede l’utilizzo di un backoffice. Questo pannello di controllo è realizzabile in diversi modi, ne abbiamo visti due: Django Admin Site e Laravel Backpack. Il primo è integrato nel framework Django ed è estensibile a seconda delle necessità: ottimo per pannelli di controllo semplici o dedicati ai tecnici. Il secondo è più complesso, richiede più lavoro ma offre un pannello di controllo con tutti gli elementi che possono servire a un uso quotidiano, estensivo e diretto ad un pubblico più generale.
Oltre questi due strumenti esistono tante altre soluzioni possibili, scopri quella più adatta al tuo progetto!