Vai al contenuto principale
BI DashboardArredamento / Produzione2023

SalesInsight

Dashboard commerciale real-time collegata all'ERP aziendale via VPN zero-trust. Ha azzerato le 15-20 ore mensili di estrazione report manuali.

Stack tecnologico

Vue.js 3ExpressTypeScriptMongoDBDockerTailscale VPNSQL ServerNginxPM2GitHub Actions

La sfida

Una PMI produttrice nel settore arredamento aveva un problema ricorrente: ogni mese, il reparto amministrativo dedicava 15-20 ore all'estrazione di report commerciali. L'ERP aziendale (basato su SQL Server) conteneva tutti i dati, ma non aveva un modulo di reportistica decente. Il risultato? Export in Excel, pivot table manuali, invio via email. E quando il direttore commerciale chiedeva un dato aggiornato a metà mese, doveva aspettare.

La direzione voleva una cosa semplice: vedere il fatturato in tempo reale, con filtri per periodo, cliente e agente. Senza chiedere all'ufficio ogni volta.

La soluzione

Ho progettato SalesInsight come una dashboard web leggera, collegata direttamente al database dell'ERP aziendale. L'idea era chiara: non duplicare i dati, ma leggerli dove sono.

Architettura zero-trust con Tailscale

Il database SQL Server dell'azienda è on-premise, dietro un firewall. La cosa tradizionale sarebbe stata aprire una porta, configurare un reverse proxy, gestire certificati SSL... e introdurre un rischio di sicurezza significativo.

Ho scelto un approccio diverso: Tailscale VPN. Ogni nodo della rete (il server della dashboard, il server aziendale) si registra sulla rete Tailscale e comunica attraverso un tunnel crittografato punto-punto. Zero porte aperte, zero configurazione firewall, zero rischi.

Il server della dashboard gira su un VPS e si connette al SQL Server aziendale come se fosse sulla rete locale. Nessun dato transita in chiaro, nessuna porta esposta su Internet.

Backend Express/TypeScript

Il backend è un'API REST costruita con Express e TypeScript. Le query al SQL Server sono ottimizzate con viste materializzate e indici dedicati, per garantire tempi di risposta sotto il secondo anche con query complesse su anni di dati.

I risultati delle query più pesanti vengono cachati in MongoDB (su Docker), con un sistema di invalidazione intelligente che refresha solo i dati modificati dall'ultimo aggiornamento.

Frontend Vue.js 3

La dashboard è costruita con Vue.js 3 e Composition API. Le visualizzazioni principali includono:

  • Andamento fatturato nel tempo (giorno, settimana, mese, trimestre, anno)
  • Performance clienti: classifica, confronto anno su anno, trend di crescita o calo
  • Performance agenti: venduto per agente con target e scostamento
  • Confronto YoY: ogni dato è sempre affiancato dal valore dell'anno precedente

L'interfaccia è progettata per essere usata dal direttore commerciale non da un analista dati. Pochi filtri, visualizzazioni chiare, drill-down dove serve.

Deploy e infrastruttura

  • Nginx come reverse proxy
  • PM2 per il process management del backend Node.js
  • GitHub Actions per la CI/CD automatizzata
  • Docker per MongoDB e per l'ambiente di staging

Risultati

  • Azzeramento tempi di estrazione report: quelle 15-20 ore mensili di lavoro manuale non esistono più
  • ROI in 12 mesi: il costo dello sviluppo è stato ripagato in un anno solo dal risparmio di tempo del reparto amministrativo
  • Autonomia completa: la direzione commerciale accede ai dati in autonomia, senza dipendere dall'ufficio amministrativo
  • Dati sempre aggiornati: il dashboard mostra i dati in near-real-time, non più report settimanali

Lezioni apprese

SalesInsight mi ha insegnato il valore di Tailscale come soluzione per l'accesso remoto ai dati aziendali. In molte PMI, i dati critici sono su server on-premise e non possono essere migrati al cloud per motivi normativi o di costi. Tailscale risolve questo problema in modo elegante e sicuro.

Un'altra lezione importante: non servono dashboard complesse per creare valore. SalesInsight ha pochi schermi, pochi filtri, pochi grafici. Ma sono esattamente quelli che servono. La tentazione di aggiungere funzionalità è forte resistere è la scelta giusta.

Questo progetto ha anche gettato le basi per AgentHub, il CRM per la rete agenti della stessa azienda. Il valore dimostrato da SalesInsight ha convinto la direzione a investire in una soluzione più ampia.