Case study di architettura / Booka
Booka: tre applicazioni, un solo modello dati.
Booka è un SaaS verticale per saloni composto da marketplace pubblico, gestionale B2B e console superadmin. Ho progettato un monorepo con deploy separati e una fondazione Supabase condivisa, così ogni prodotto può evolvere senza duplicare identità, prenotazioni e dati dei saloni.
- Ruolo
- Software architect
- Proprietà
- Progetto mio e di Giulio
- Perimetro
- Architettura, delivery, passaggio in produzione
- Forma
- Monorepo, tre deploy, un database
- Stato
- In produzione
Il requisito architetturale
Marketplace, gestionale B2B e console superadmin hanno utenti, frequenze di rilascio e profili di rischio diversi. Il sito pubblico cambia con le attività commerciali; il gestionale segue le esigenze operative dei saloni; la console amministrativa richiede maggiore stabilità e accessi più restrittivi.
I tre prodotti condividono però le stesse entità: saloni, prenotazioni e persone. Uno stesso account può essere cliente e titolare di un'attività. Separare anche i dati avrebbe introdotto duplicazioni, sincronizzazioni e ambiguità sull'identità.
L'obiettivo era quindi mantenere indipendenti i cicli di rilascio senza frammentare il modello dati.
Le opzioni architetturali
Ho confrontato tre configurazioni rispetto a indipendenza dei rilasci, coerenza dei dati, sicurezza e costo di manutenzione.
Architettura implementata
La soluzione utilizza tre applicazioni Next.js nello stesso monorepo, distribuite separatamente e collegate a una fondazione Supabase comune. Ogni ambiente e ogni variabile hanno un proprietario esplicito.
La stessa struttura supporta funnel pre-lancio, gestione dei consensi, email transazionali, routing multilingua e il percorso di adeguamento fiscale.
Pipeline, configurazione e documentazione di handover fanno parte dell'architettura: il sistema deve poter essere rilasciato e gestito anche da persone diverse dal suo autore.
Benefici operativi
Ogni applicazione può essere rilasciata senza coinvolgere le altre, riducendo il raggio di impatto delle modifiche.
Le migrazioni dello schema vengono definite una sola volta e sono applicate alla stessa base dati, evitando sincronizzazioni tra sistemi paralleli.
L'identità rimane coerente in tutti i prodotti, anche quando una persona ricopre più ruoli.
La piattaforma è passata dalla validazione all'operatività commerciale mantenendo lo stesso modello di delivery.
Serve una decisione architetturale simile?
Lavoro su prodotti che devono separare applicazioni, utenti o cicli di rilascio senza perdere coerenza nei dati e nella gestione operativa.
hello@robertodrago.dev