アーキテクチャ
レイヤー、依存関係ルール、譲れない原則、共通のアプリ構造について説明します。
レイヤーこのセクションへのリンク: レイヤー
上から順に、プロダクトドメイン、エコシステムと AI、プロダクトラインのレイヤー 1 つ、そしてカーネルとデザインシステムです。Firebase アダプターはコンポジションルートでバインドされます。
プロダクトドメイン層
各プロダクトリポジトリの lib/features/<vertical>/ 配下に置く、garage、patients、flights などのバーティカル機能のみです。共有パッケージには決して置きません。
エコシステム層
After ID、After+、イベントバス、プロダクト横断 API、共有サービスです。プロダクト同士はこのファブリックを通じて連携し、兄弟プロダクトを直接インポートすることはありません。
AI 機能
会話、OCR、ビジョン、要約、ツール呼び出しなどのモジュール式機能を備えた単一の AI プラットフォームです。プロダクトは機能を有効化・無効化するだけで、独自の AI スタックを持ちません。
コンシューマーモジュール
メンバーシップブリッジ、コンシューマー機能カタログ、パーソナルボールト、起動時の同意、地域ロケーションからなる薄い B2C レイヤーです。リファレンス:SuperGarage。
エンタープライズモジュール
組織、RBAC、ワークフロー、タスク、カレンダー、ドキュメント、メッセージング、レポート、監査、オフライン同期など 14 の B2B ポートで、それぞれにインメモリのモックが付属します。リファレンス:SuperHospital。
共有カーネル
認証、堅牢化されたネットワーク、ストレージ、Riverpod による DI、フラグ、リモート設定、BYOK AI SDK、プレミアム権限、通知、ディープリンク、そしてダッシュボード・プラグイン・検索・設定の各エンジンです。
デザインシステム
コンシューマーとエンタープライズに共通のビジュアルファミリーです。カラー、スペーシング、角丸、モーション、タイポグラフィのトークンと共有コンポーネントを提供します。
Firebase アダプター
after_core のポートの背後にある Firebase Auth、Firestore の blob 同期、Storage のメディア同期です。コンポジションルートでのみバインドされ、ドメインコードが Firebase をインポートすることはありません。
依存関係ルールこのセクションへのリンク: 依存関係ルール
依存関係は下向きのみです。プロダクト同士は、エコシステム層のイベントとセキュアな API を通じて通信します。ドメインを追加すると最上位レイヤーにモジュールが加わり、この図は変わりません。
原則このセクションへのリンク: 原則
- SuperGarage はコンシューマー向けのリファレンス、SuperHospital はエンタープライズ向けのリファレンスです。
- 業界別・バーティカルモジュールは、プロダクトリポジトリにのみ置きます。
- 共有 OS モジュールは、after_core、after_consumer、after_enterprise にのみ置きます。
- ゼロから作らず生成する。
- SDK よりポート。
- ファミリーとしての統一感を優先:UI フレーム、モーション、密度、スプラッシュ、シェルは同一です。
- すべてのポートにモック実装が付属します。
共通のアプリ構造このセクションへのリンク: 共通のアプリ構造
コンシューマー向けでもエンタープライズ向けでも、すべてのプロダクトは同じ手順で起動します。
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 only