directory architecture

  • cmd/:アプリケーションのエントリーポイントを含むディレクトリ。main.goが配置されます。
  • internal/: アプリケーションのコアとなるコードを格納します。このディレクトリは、さらに以下のサブディレクトリに分かれます。
    • domain/: エンティティ(ドメインモデル)とビジネスルールを定義します。
    • usecase/: アプリケーションのビジネスロジック(ユースケース)を実装します。リポジトリのインターフェースもここに定義されます。
    • interface/: 外部とのインターフェース(コントローラー、プレゼンター)を実装します。HTTPリクエストの処理やリポジトリの具体的な実装が含まれます。
    • infrastructure/: アプリケーションのインフラストラクチャ層(データベース接続、外部サービスとのインターフェース)を実装します。
  • db/migrations/: データベースのスキーマ変更を管理するマイグレーションファイルを格納します。
  • Dockerfileとdocker-compose.yml: コンテナ化されたアプリケーションとその依存関係を定義します。
  • go.modとgo.sum: 依存するGoモジュールを管理します。