Forge Docs
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({ ... });

スタイル

  • クラスではなく関数ベース(モジュールパターン)
  • インスタンスを作らない、状態を持たない

On this page