背景
仕事でNest.jsの導入を行う際に調査していた結果、ドメインオブジェクトベースでディレクトリが分けられるのが主流?なのかその様な記事しか見当たらなかった。しかし、serviceやcontrollerなどの機能単位で作成したかったのでアレンジしてみました。
ディレクトリ構成
一応gitリポジトリも載せておきます。
├─ web-api
│ └─ src
│ ├─ controllers ... 各APIのリクエストを受け付けを担う
│ │ └─ users.controller.ts
│ ├─ interfaces ... アプリケーションのインターフェースを格納する
│ │ └─ users.dto.ts
│ ├─ domain
│ │ ├─ entirties ... ドメインオブジェクトEntity
│ │ │ └─ users.entity.ts
│ │ └─ repositories ... DBアクセスを担う
│ │ └─ users.repository.ts
│ ├─ logger ... ログ出力を担う
│ │ └─ logger.service.ts
│ ├─ modules ... 依存関係の定義を担う
│ │ └─ users.module.ts
│ ├─ services ... ビジネスロジックを担う
│ │ └─ users.service.ts
│ ├─ app.module.ts ... アプリケーションのルートモジュール
│ └─ main.ts ... アプリケーションのエントリファイル
│
├─ test
│ └─ ... 設計中
│
├─ .eslintrc.js
├─ .prettierrc
├─ nest-cli.json
├─ ormconfig.yaml ... typeormの定義ファイル
├─ package-lock.json
├─ package.json
├─ README.md
├─ tsconfig.build.json
├─ tsconfig.json
└─ yarn.lock