アーキテクチャ図#
概要#
本システムの全体構造、モノレポ内の各パッケージの責務、およびそれらの依存関係を定義する。 本システムはモノレポ構成を採用し、関心の分離(SoC)を徹底する。
レイヤー構造図#
graph TD
subgraph Apps ["apps/ (アプリケーション層)"]
Frontend[frontend: React / React Router]
Backend[backend: Hono / Bun]
end
subgraph Packages ["packages/ (共通基盤・ドメイン層)"]
UI[ui: shadcn/uiベース共通コンポーネント]
API[api: Orval 生成 Client]
Domain[domain: ビジネスロジック・Entity/Policy]
DB[db: Prisma/Repository]
Infra[infra: Terraform/AWS設定]
Shared[shared: Logger/Config/TraceID]
end
%% 依存関係
Frontend --> UI
Frontend --> API
Frontend --> Shared
Backend --> Domain
Backend --> DB
Backend --> Shared
Domain --> DB
Domain --> Shared
DB --> Shared
API -. "OpenAPIから生成" .-> Backend各パッケージの責務#
- apps/frontend: UI/UXの構築。React Routerによるルーティング、TanStack Queryによる状態管理。
- apps/backend: HonoによるAPIエンドポイント。ミドルウェア(CORS, Logger, TraceID)の適用。
- packages/domain: ビジネスロジックの中核。Entity, Value Object, Domain Service, およびポリシーの強制。
- packages/db: データアクセス層。Prisma Clientを用いたデータベース操作、Repositoryパターン。
- packages/ui: デザインシステムに基づく共通UIコンポーネント群。
- packages/api: OpenAPI (specs/api) から生成されたフロントエンド用APIクライアント。
- packages/infra: TerraformによるAWSリソース(S3, CloudFront, Lambda等)のコード化。
- packages/shared: trace_id (UUID v4)、Pinoによる構造化ロガー、共通設定等の横断的関心事。