Vai al contenuto
BigTree108

Case study: il portale di gestione aziendale

Una nuova azienda nel 2025 aveva bisogno di selezione, onboarding, contratti, rilevazione delle ore, ferie, fatturazione e contabilità fin dal primo giorno, con un budget che escludeva l’acquisto di sette prodotti. Abbiamo costruito un’unica piattaforma per tutto questo, e ci gestiamo l’azienda.

Il problema

Gli strumenti standard di HR, rilevazione delle ore e fatturazione sarebbero costati ciascuno, ogni mese, più dell’intero budget, e nessuno di essi comprendeva la normativa ucraina sui collaboratori, la firma elettronica tramite una banca locale o il modo in cui le ore passano da un tracker a una fattura cliente. L’alternativa erano i fogli di calcolo, che smettono di funzionare la settimana in cui qualcuno è in ferie.

La decisione fu di costruire la piattaforma sullo stack che vendiamo, trattarla come un vero prodotto con le stesse regole di ingegneria che applichiamo al lavoro per i clienti e lasciare che diventi il riferimento su cui i nostri clienti possono informarsi.

Che cosa fa

  • Selezione

    Posizioni aperte pubblicate sui portali di lavoro, screening dei candidati tramite un bot Telegram con una libreria di domande, colloqui tecnici ed esterni con prenotazione, monitoraggio del periodo di prova.

  • Onboarding

    Un flusso guidato che raccoglie i documenti di identità, li verifica con servizi cloud di AI, conferma l’ortografia del nome, raccoglie recapiti e attrezzatura e apre gli account tramite l’identity provider.

  • Contratti e documenti

    Contratti di servizi e NDA generati da modelli in PDF, inviati per la firma elettronica e archiviati come documento firmato. Contratti con i clienti e statement of work seguono lo stesso percorso.

  • Ore e ferie

    Ore per assegnazione di progetto, sincronizzate da tracker esterni, modificabili dallo specialista; ferie e malattia con giorni spettanti e approvazioni per contratto.

  • Compensi e fatturazione

    Fatture mensili degli specialisti e fatture ai clienti prodotte dalle stesse ore registrate, tassi di cambio della banca centrale, pagamenti una tantum riaddebitati, archivio delle fatture firmate.

  • Contabilità e conformità

    Promemoria per dichiarazioni fiscali e pagamenti, importazione degli estratti conto bancari, contatti di emergenza e un modello di permessi con row-level security e richieste di elevazione per i dati finanziari.

  • Notifiche

    Schede in chat e nei messenger per ogni evento su cui una persona deve agire, con la regola che nessun messaggio riporti mai dati finanziari; questi restano dietro l’accesso con login.

Come è costruita

  • Backend

    .NET 10 su Azure Functions, vertical slice con CQRS tramite un mediator generato dal source generator, validazione a ogni confine, EF Core con migrazioni versionate.

  • Dati

    Azure SQL con row-level security per cliente e colonne Always Encrypted per i dati personali e finanziari, con le chiavi conservate in un vault gestito.

  • Frontend

    Angular con componenti standalone, signals e change detection senza zone, un design system Tailwind e un client API generato dal documento OpenAPI.

  • Consegne

    GitHub Actions con credenziali federate, Terraform per l’intero ambiente, modifiche al database rilasciate come migrazioni nella pipeline, CodeQL e scansione delle dipendenze.

Le regole che l’hanno plasmata

  • Priorità in un ordine fisso: prima i costi, poi la sicurezza, poi la modernità, poi le prestazioni, poi l’allineamento alla conformità. Ogni conflitto si risolve a favore della priorità più alta.
  • L’identity provider è la fonte di verità per i dati delle persone; il database ne è una cache e l’unico luogo per stipendi, dati di selezione e permessi.
  • I dati sensibili non finiscono mai in una colonna in chiaro, nemmeno per un istante. La cifratura è dichiarata in più di un punto e validata all’avvio.
  • Ogni correzione di bug viene rilasciata con un test per la sua classe, collocato nel livello di controllo più ampio in grado di vederla, spesso un test di architettura anziché un test unitario.
  • La chat è una superficie di visualizzazione non attendibile. Le notifiche indicano l’evento e rimandano alla pagina protetta da autenticazione; importi e tariffe non escono mai dal prodotto.

Perché è importante per Lei

Non stiamo descrivendo una demo. Questa piattaforma gestisce ogni giorno un’azienda reale, il che significa che abbiamo convissuto con le nostre decisioni di architettura, le nostre migrazioni e i nostri avvisi abbastanza a lungo da sapere quali fossero giusti. È lo stesso giudizio che portiamo nel Suo prodotto.

Vuole qualcosa di simile per la Sua azienda?

Ci descriva i processi che oggi gestisce con i fogli di calcolo. Riceve un piano scritto, una proposta di architettura e una stima entro un giorno lavorativo.