概要
Hono + GraphQL + PostgreSQL で作った音楽カタログ API です。
Artist / Album / Track の曲庫を管理し、聞き手はプレイリストを作れます。
GraphQL 単一エンドポイント(/graphql)で CRUD します。
技術スタック
| 領域 | 採用技術 |
|---|
| API | Hono / GraphQL |
| DB | PostgreSQL / Drizzle ORM |
| 言語 | TypeScript |
| 運用 | Docker |
できること
| 誰 | 操作 |
|---|
| 聞き手(UserAccount) | 曲庫の閲覧、自分のプレイリスト CRUD |
| アーティスト(ArtistAccount) | 曲庫の閲覧、自分が関与する Artist / Album / Track の CRUD |
ドメインモデル
| 概念 | 説明 |
|---|
| UserAccount / ArtistAccount | ログイン主体。完全別登録(切り替えは再ログイン) |
| User | 聞き手の公開プロフィール。プレイリストの所有者 |
| Artist | 演奏者 / グループの公開プロフィール |
| Track | 1 曲の録音 |
| Album | 順序付き Track 一覧 |
| Playlist | User が所有する順序付き Track 一覧 |
開発・運用
npm install
cp .env.example .env
docker compose up -d db
npm run db:migrate
npm run dev
工夫した点
- 二重 Account モデル … 聞き手とアーティストの責務を分離し、認可を単純化
- 三層 + ドメイン … GraphQL 層と永続化の詳細を Service / Repository / Domain に分離
- クローズド β 向け運用 … Docker / migration / CI まで一通り整備