Dashboard 2.0: da progetto interno a piattaforma self-hosted per le performance retail
Dashboard 2.0 è l’evoluzione completa del progetto che avevo presentato nella prima versione della mia Dashboard Performance. L’obiettivo è rimasto lo stesso: trasformare dati operativi come fatturato, ticket e Service/Ticket in informazioni leggibili e realmente utili. L’architettura, invece, è cambiata profondamente.
Flask
SQLite / SQLAlchemy
Plotly
Multi-Branch
Self-Hosted
MIT License
Nel marzo 2025 avevo pubblicato la prima versione della Dashboard: un’applicazione web sviluppata per sostituire fogli Excel e rendere più semplice l’analisi delle performance di uno shop. In quell’articolo avevo già anticipato una futura Dashboard 2.0.
La nuova versione non è un semplice restyling. Ho rivisto il progetto pensando meno a una singola installazione e più a una piattaforma configurabile: più filiali, identità aziendale personalizzabile, utenti e ruoli, impostazioni indipendenti, audit delle operazioni, backup e un setup iniziale guidato.
Una precisazione sulla roadmap originale.
Nella prima versione avevo previsto anche l’eliminazione completa dell’inserimento manuale tramite integrazione automatica dei dati. Nella release pubblica della 2.0 ho preferito consolidare prima l’architettura, la gestione multi-filiale, la sicurezza, la configurazione e il reporting. L’inserimento manuale delle metriche rimane quindi disponibile e l’automazione dei dati rappresenta un possibile sviluppo successivo.
Cos’è Dashboard 2.0?
Dashboard 2.0 è una web application self-hosted sviluppata con Python e Flask per raccogliere, organizzare e analizzare KPI operativi relativi a uno o più punti vendita.
Il sistema utilizza tre metriche principali: fatturato generato, numero di ticket e rapporto Service/Ticket. I dati possono essere visualizzati su base settimanale, mensile e annuale, oltre che confrontati attraverso grafici e viste dedicate.
Essendo self-hosted, l’applicazione può essere installata su una macchina locale, un server Linux, una VM o su hardware compatibile come un Raspberry Pi, mantenendo il controllo dell’ambiente e dei dati.

Le principali funzioni della nuova versione
Dashboard settimanale
Visualizzazione giornaliera delle metriche con riepilogo della settimana, selezione della settimana e navigazione tra periodi.
Vista mensile
Aggregazione dei dati del mese con totali, medie e struttura pensata per una lettura rapida delle performance.
Analisi annuale
Totali mensili e riepilogo annuale di fatturato, ticket e Service/Ticket, con selezione dell’anno.
Grafici interattivi
Plotly viene utilizzato per trasformare le metriche in grafici dinamici e facilitare l’identificazione dei trend.
Confronto periodi
Mesi e anni possono essere messi a confronto per evidenziare variazioni e differenze tra periodi.
Report PDF
Le principali viste possono essere trasformate in report PDF attraverso WeasyPrint e grafici esportati tramite Kaleido.
Multi-filiale
Una singola installazione può gestire più punti vendita, mantenendo separate le metriche associate a ogni filiale.
Utenti e ruoli
L’applicazione distingue utenti normali e amministratori e protegge le operazioni amministrative.
Backup e Audit Log
Backup locali esportabili, ripristino controllato e tracciamento delle principali operazioni amministrative.
Da singolo shop a piattaforma multi-filiale
Una delle modifiche architetturali più importanti riguarda la gestione delle filiali. Nella 2.0 ogni record delle metriche è collegato alla propria filiale e l’amministratore può passare da un punto vendita all’altro tramite il selettore della filiale attiva.
Ogni filiale dispone inoltre di configurazioni proprie, come lingua, tema grafico, visualizzazione della domenica, nome mostrato e logo. A livello di organizzazione è possibile definire anche il nome dell’azienda e la valuta utilizzata.
Questo rende il progetto white-label: non è legato nel codice a una specifica azienda e può essere configurato durante il primo avvio.
Dai dati giornalieri all’analisi delle performance
Il principio alla base della Dashboard è semplice: un dato operativo è utile solo quando può essere letto nel suo contesto. Per questo la 2.0 mette a disposizione diversi livelli di analisi.
| Vista | Obiettivo | Metriche |
|---|---|---|
| Settimanale | Controllo operativo quotidiano | Fatturato, Ticket, Service/Ticket |
| Mensile | Analisi aggregata del mese | Totali e medie |
| Trend mensile | Visualizzare l’andamento giornaliero | Grafici Plotly |
| Confronto mensile | Confrontare più periodi | Fatturato, Ticket, Service/Ticket |
| Annuale | Visione strategica dei 12 mesi | Totali mensili e annuali |
| Confronto annuale | Confrontare due anni | Grafici e riepilogo KPI |
Amministrazione, ruoli e tracciabilità
La sezione amministrativa è uno degli aspetti che differenziano maggiormente Dashboard 2.0 dal prototipo iniziale.
Gli amministratori possono creare e modificare utenti, assegnare ruoli, configurare le filiali, modificare le impostazioni dell’organizzazione e gestire il database. L’account proprietario creato durante il setup è protetto da alcune operazioni critiche.
Le password non vengono memorizzate in chiaro: l’applicazione utilizza le funzioni di hashing messe a disposizione da Werkzeug.
Audit Log
Le principali operazioni amministrative vengono registrate in un Audit Log. È quindi possibile ricostruire chi ha effettuato una determinata modifica e quale tipo di operazione è stata eseguita. Il log può inoltre essere filtrato ed esportato.
Backup e ripristino
Il database e i file caricati possono essere esportati all’interno di un archivio ZIP. Durante un ripristino viene richiesta nuovamente la password dell’amministratore e il sistema crea anche un backup di sicurezza prima di sostituire il database esistente.
Privacy by design del repository pubblico
Il repository GitHub contiene esclusivamente il codice dell’applicazione. Database locali, backup, file di configurazione con segreti, loghi caricati e dati operativi non fanno parte del repository pubblico.
Architettura tecnica
Anche dal punto di vista del codice la 2.0 è stata organizzata in modo più modulare. L’applicazione separa modelli, servizi, autenticazione, setup iniziale, dashboard e amministrazione utilizzando una struttura Flask basata su Blueprint.
Modello dati
| Entità | Responsabilità |
|---|---|
| Organization | Nome dell’organizzazione e valuta |
| Branch | Filiali, codice, nome visualizzato e logo |
| Settings | Lingua, tema e preferenze della filiale |
| MetricEntry | Metriche giornaliere associate alla filiale |
| User | Account, password hash, ruolo e stato |
| AuditLog | Tracciamento delle operazioni amministrative |
Interfaccia multilingua
L’applicazione utilizza Flask-Babel e include attualmente le interfacce inglese, tedesca e francese. La lingua viene configurata a livello di filiale insieme al tema chiaro o scuro.
Installazione e utilizzo self-hosted
Il progetto richiede Python 3.11 o superiore. Per una prova locale è sufficiente creare un ambiente virtuale, installare le dipendenze e avviare l’applicazione.
git clone https://github.com/ITALIANJOB97/Dashboard-2.0.git
cd Dashboard-2.0
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python run.py
Al primo avvio viene mostrato un setup guidato dove vengono richiesti nome dell’azienda, valuta, credenziali dell’amministratore e le filiali da configurare.

Il repository contiene inoltre un file requirements-raspberry.txt con indicazioni specifiche per un’installazione su Raspberry Pi OS.
Nota per l’utilizzo in produzione.
Il server di sviluppo integrato in Flask è adatto allo sviluppo locale. Per pubblicare l’applicazione in rete è opportuno utilizzare un server WSGI adatto alla produzione, una SECRET_KEY privata e stabile e una connessione HTTPS.
Cosa è cambiato rispetto alla Dashboard originale?
| Area | Prima versione | Dashboard 2.0 |
|---|---|---|
| Struttura | Progetto focalizzato su uno shop | Architettura multi-filiale |
| Configurazione | Più legata all’installazione | Setup iniziale guidato |
| Branding | Limitato | Nome azienda, valuta e logo filiale |
| Lingue | Interfaccia più statica | EN / DE / FR tramite Flask-Babel |
| Design | Singola impostazione grafica | Tema Dark e Light |
| Amministrazione | Funzioni essenziali | Utenti, filiali, impostazioni, database e audit |
| Backup | Non centrale | Esportazione e ripristino integrati |
| Distribuzione | Progetto personale interno | Repository pubblico e licenza MIT |
Il prossimo passo
Dashboard 2.0 è una base molto più solida rispetto alla prima versione, ma non considero il progetto concluso. L’architettura attuale permette di continuare a evolvere l’applicazione senza dover ripartire da zero.
Per me questo progetto rappresenta soprattutto il passaggio da un’applicazione sviluppata per risolvere un problema specifico a un software progettato con una struttura più generale, configurabile e riutilizzabile.
Dashboard 2.0 è disponibile su GitHub
Ho pubblicato il codice sorgente del progetto su GitHub. Il repository include l’applicazione, le dipendenze, le istruzioni di installazione e la licenza MIT.
Gli screenshot presenti in questa pagina utilizzano dati dimostrativi e non rappresentano dati aziendali reali.






