Preloader
Drag
Il gestionale sul computer e la stessa applicazione sul telefono
Web App

Gestionale per agenzie digitali: tre applicazioni, una sola fonte di verità

Tre applicazioni e un backend solo, per un gruppo di agenzie: preventivi e contratti, pianificazione del carico, fatture riconciliate, firma elettronica, credenziali cifrate e un assistente che interroga i dati veri.

  • applicazioni, un backend solo

  • tabelle nel database

  • moduli di endpoint

  • commit in quattro mesi

In sintesi

In breve

Il problema non erano gli strumenti

Il gruppo lavorava come lavorano quasi tutte le agenzie di quella dimensione: i preventivi in un configuratore fatto in casa, le attività su Trello, le scadenze nelle teste delle persone, la fatturazione su Fatture in Cloud, i rimborsi su fogli di calcolo ricompilati a fine mese, le credenziali dei siti dei clienti sparse fra gestori di password personali e messaggi.

Niente di tutto questo era rotto. Il problema era che nessuno strumento sapeva cosa stesse facendo l’altro: il tempo speso davvero su una lavorazione non arrivava mai al preventivo successivo, una fattura emessa non chiudeva la riga del contratto, un sito caduto non generava una lavorazione. L’obiettivo non era digitalizzare, era avere una sola fonte di verità e costruirci intorno tutto il resto.

Schermata di scelta dell azienda: il sistema serve piu societa dello stesso gruppo

Tre applicazioni, una regola di tre parole

Il backend in FastAPI tiene i dati e tutte le regole. Il gestionale da scrivania, in React, è per chi ci passa la giornata davanti. L’applicazione da telefono non è un ripensamento del prodotto: sono le stesse funzioni, installabile e con le notifiche.

La regola che ha retto tutto il progetto sta in tre parole: il backend decide. I due programmi che si vedono non hanno un database, non tengono una copia delle regole e non interpretano niente. Quando un permesso cambia, cambia in un posto solo. Si è visto quando è arrivata la terza applicazione, che ha potuto inseguire la seconda funzione per funzione senza riscrivere nulla.

La pianificazione del carico, che propone e non decide

È il modulo più grande del backend e la pagina più complessa dell’interfaccia: calendario per giorno, settimana e mese, una colonna per operatore, attività che si trascinano, scambio di lavoro fra persone e rilevamento del sovraccarico.

La parte interessante non è il calendario, è il peso. Non tutte le ore sono uguali e ogni società del gruppo pesa i tipi di lavorazione in modo diverso, quindi i pesi si configurano per azienda e la capacità per persona. La prima versione distribuiva le attività da sola: funzionava, ed è stata tolta. Nessun algoritmo sapeva che quel martedì quella persona era dal cliente. Da allora il sistema calcola, segnala gli sforamenti e lascia la mano a una persona.

Calendario del carico di lavoro, con una colonna per operatore e il rilevamento del sovraccarico
Pipeline commerciale: richiesta, preventivo, contratto e piano di fatturazione

Dal preventivo alla fattura incassata

Il giro commerciale è chiuso: catalogo, configuratore modulare, preventivo, contratto, piano di fatturazione a rate. Niente più fogli di calcolo in mezzo.

L’integrazione con Fatture in Cloud non è una sincronizzazione, è una riconciliazione: confronta l’estratto conto con le fatture emesse, trova i duplicati, tiene conto delle note di credito e lega ogni documento alla rata del contratto che lo ha generato. Un servizio separato trasforma il pagamento di un abbonamento in fattura elettronica verso lo SDI.

La cassaforte delle credenziali

Qui il modello di sicurezza conta più dell’interfaccia. Le credenziali sono cifrate con Cloud KMS e il codice dà per scontate tre regole: sbloccare non è entrare, perché ogni rivelazione chiede un secondo permesso a scadenza breve, separato dalla sessione e ottenibile con impronta o volto; chi non ha accesso riceve «non esiste» e non «non puoi», perché il secondo confermerebbe che quella credenziale c’è; e non esiste un ripiego in chiaro, quindi se la chiave non risponde la cassaforte non si apre e non scrive.

Sopra ci sono le cose che servono davvero in un’agenzia: chiedere una credenziale a un cliente con un collegamento usabile una volta sola, condividerne diverse con un collega in un colpo solo, i promemoria di rotazione e un registro degli accessi leggibile.

Cassaforte delle credenziali, cifrate e tracciate
Assistente che risponde interrogando il database con i permessi di chi lo usa

Un assistente che guarda i dati veri

Non è un programma che risponde sulla documentazione e non cerca dentro i documenti: interroga il database vero, con gli stessi permessi dell’utente che lo sta usando. Risponde mentre scrive, mostra le schede dell’applicazione invece di descrivere i dati a parole, e quando la domanda implica un’azione, mandare una comunicazione o prenotare una sala, non la esegue: la propone e aspetta che una persona confermi.

Il lavoro meno visibile è stato sull’onestà delle risposte: non inventare persone, non riferire ciò che non è stato cercato, spiegare perché un elenco è vuoto invece di rispondere zero, e usare le parole dell’applicazione con il significato che hanno lì dentro. Le citazioni vengono verificate e c’è una serie di prove le cui risposte attese sono calcolate dal database, così modelli diversi si confrontano su domande vere.

I siti dei clienti, e una legge nuova

Dal 27 settembre 2026 il decreto legislativo 30/2026 vieta sui siti commerciali le affermazioni ambientali generiche non sostanziate. Il sistema tiene il registro dei siti dei clienti, con tempo di attività, analisi SEO, punteggi di velocità, scadenze dei domini e manutenzioni programmate, e sopra ci ha messo una scansione di conformità.

Il risultato non è un elenco di allarmi ma un ordinamento in tre livelli: vietato di per sé, quindi si rimuove; dipende dalle certificazioni del cliente, quindi si verifica; legittimo, quindi non si tocca. Il terzo livello è il motivo per cui la funzione esiste in questa forma: «biologico» su un prodotto certificato è protetto da un regolamento europeo, e segnalarlo come problema spingerebbe a cancellare una parola che il cliente ha tutto il diritto di usare. Uno strumento di conformità che grida al lupo non fa perdere tempo: fa danno.

Registro dei siti web dei clienti, con stato, punteggi di velocita e manutenzioni
Il responsabile di progetto vede la squadra e puo riprogrammare, ma non vede i prezzi

La stessa applicazione, tre mestieri diversi

Chi amministra vede gli indicatori del mese, il carico, le consegne in tempo e una scrivania di riquadri che si spostano, salvata per utente. Il responsabile di progetto vede la squadra e può riprogrammare, ma non vede i prezzi. Chi lavora sulle commesse vede il suo lavoro e basta: meno voci nel menu e nessuna decisione che non gli compete.

I permessi nell’interfaccia sono uno specchio, non un controllo: nascondono ciò che non si può fare, ma l’autorizzazione vera sta nel backend su tre livelli, ruolo, azienda e area di lavoro. A lavoro finito un controllo su 65 rotte ha confrontato l’uno con l’altro.

Le stesse funzioni, in tasca

L’applicazione da telefono insegue quella da scrivania, non la reinterpreta: stesso comportamento, interfaccia da telefono. Si installa come applicazione web, viene distribuita anche come pacchetto Android ed è capace di notifiche.

La scrivania è personalizzabile, le lavorazioni si trascinano da una colonna all’altra e la cassaforte si sblocca con l’impronta o con il volto. Anche la barra in basso si configura per utente e per azienda, e la configurazione vive sul backend: si cambia telefono e si ritrova la propria.

Scrivania, lavorazioni e cassaforte nell applicazione da telefono

Com'è fatto sotto, e cosa resta

Tutto su Google Cloud nella regione italiana: il backend su Cloud Run con un secondo servizio per il ponte verso la fatturazione elettronica, MySQL gestito, due depositi separati per immagini e per documenti firmati, Cloud KMS per le credenziali, e i lavori notturni programmati, dallo scatto degli indicatori alle 2 alla scansione dei siti ogni ora. La scansione gira a gruppi di tre per restare sotto il tempo massimo di una richiesta: metà del lavoro con un cloud è adattarsi ai suoi limiti invece di combatterli.

Tre cose me le porto dietro. Togliere una funzione è una decisione di prodotto e non una sconfitta, perché il pianificatore automatico funzionava ed è stato comunque rimosso. Il valore sta nel terzo livello, cioè nel distinguere «vietato» da «da verificare» da «legittimo, non toccare». E la sicurezza si progetta all’inizio o non si progetta: la divisione per azienda messa il primo giorno è il motivo per cui aggiungere una cassaforte di credenziali quattro mesi dopo è costato due settimane invece di una riscrittura.

Il pacchetto

Cosa è stato consegnato

In dettaglio

Scheda tecnica

Il cliente non è nominato per sua scelta. Le schermate vengono dal sistema in produzione, ma ogni dato riconducibile a una persona o a un’azienda è sostituito con dati di fantasia e i marchi sono sfocati: quello che resta vero è l’interfaccia.

Parliamone

Ti serve un software così?

Se hai un processo che oggi gestisci a mano e vorresti automatizzare, raccontamelo: capiamo insieme se ha senso costruirci sopra uno strumento.

Serve qualcosa di simile? Questo progetto è un esempio di sviluppo di web app e gestionali su misura. Il primo incontro e il preventivo sono gratuiti: scrivimi e ne parliamo.