Architettura
Livelli, regola delle dipendenze, principi non negoziabili e struttura comune delle app.
LivelliLink a questa sezione: Livelli
Dall’alto verso il basso: dominio del prodotto, ecosistema e IA, un livello di linea di prodotto, poi il kernel e il design system. Gli adapter Firebase si collegano nella composition root.
Livello di dominio del prodotto
Solo funzionalità verticali, in lib/features/<vertical>/ nel repository di ciascun prodotto: garage, pazienti, voli. Mai nei pacchetti condivisi.
Livello di ecosistema
After ID, After+, l’event bus, le API tra prodotti e i servizi condivisi. I prodotti comunicano tramite questo tessuto, mai con import tra repository affiancati.
Capacità di IA
Un’unica piattaforma di IA con capacità modulari: conversazione, OCR, visione, riassunto, tool calling e altro. I prodotti le attivano o disattivano; non includono stack di IA propri.
Moduli consumer
Livello B2C snello: bridge per le membership, catalogo funzionalità consumer, archivio personale, consenso al lancio e località regionale. Riferimento: SuperGarage.
Moduli enterprise
Quattordici port B2B (organizzazione, RBAC, workflow, attività, calendario, documenti, messaggistica, report, audit, sincronizzazione offline), ciascuno con un mock in memoria. Riferimento: SuperHospital.
Kernel condiviso
Autenticazione, networking protetto, storage, DI con Riverpod, flag, remote config, SDK di IA BYOK, diritti premium, notifiche, deep link e i motori di dashboard, plugin, ricerca e impostazioni.
Sistema di design
Un’unica famiglia visiva per consumer ed enterprise: token di colore, spaziatura, raggio, animazione e tipografia, più componenti condivisi.
Adapter Firebase
Firebase Auth, sincronizzazione blob su Firestore e sincronizzazione media su Storage dietro i port di after_core. Collegati solo nella composition root; il codice di dominio non importa mai Firebase.
Regola delle dipendenzeLink a questa sezione: Regola delle dipendenze
Le dipendenze puntano solo verso il basso. I prodotti comunicano tra loro tramite eventi e API sicure nel livello di ecosistema. Aggiungere un dominio aggiunge un modulo di livello superiore e lascia invariato questo diagramma.
PrincipiLink a questa sezione: Principi
- SuperGarage è il riferimento consumer; SuperHospital è il riferimento enterprise.
- I moduli di settore e verticali vivono solo nei repository dei prodotti.
- I moduli OS condivisi vivono solo in after_core, after_consumer e after_enterprise.
- Generare, non ripartire da zero.
- Port anziché SDK.
- Vince l’aria di famiglia: cornice, animazione, densità, splash e shell sono identici.
- Ogni port include un’implementazione mock.
Struttura comune delle appLink a questa sezione: Struttura comune delle app
Ogni prodotto, consumer o enterprise, si avvia con la stessa sequenza.
main.dart
→ PlatformConfig.current = manifest
→ ProviderScope(overrides: After*Overrides…)
→ ColdStart (OVERSTEIN splash)
→ AuthGate
→ ProductShell (tabs from platform + spec)
→ Home = Dashboard Engine (+ plugins)
→ OS modules = platform screens
→ Vertical = product feature modules onlySorgente supercore/docs/PLATFORM_DOCTRINE.md (si apre in una nuova scheda)