Architecture
Architecture
@unitto/features パッケージの設計方針とディレクトリ構成
Feature-based + Layered アーキテクチャ
@unitto/features は Feature-based パターンを採用し、各フィーチャーの末端に core/ を配置する。
ディレクトリ構造
features/src/
├── <feature>/
│ ├── index.ts
│ └── core/
│ ├── schema/ # Zodスキーマ・型定義
│ ├── handler/ # リクエスト受付
│ ├── service/ # ビジネスロジック
│ ├── repository/ # データアクセス(内部のみ)
│ └── adapter/ # 外部サービス変換(内部のみ)ネストも可能: features/src/<feature>/<sub-feature>/core/
エクスポート規則
外部に公開するのは Handler / Service / Schema の 3 つのみ。
// features/src/user/index.ts
export * as Handler from "./core/handler";
export * as Service from "./core/service";
export * as Schema from "./core/schema";export * as による名前空間パターンで、ドット記法でアクセスする。
import { User } from "@unitto/features";
User.Handler.create({ ... });
User.Service.findById("...");
User.Schema.UserSchema.parse({ ... });スタイル
- クラスではなく関数ベース(モジュールパターン)
- インスタンスを作らない、状態を持たない