# whois.band バンドとアーティストの情報を管理するシンプルなサイト。ログイン不要、誰でも編集可能。 ## 機能 - バンド情報の登録・編集(バンド名、活動拠点、リンク、メンバー) - アーティスト情報の独立管理(名前、リンク) - UUID と slug の2種類の URL でアクセス可能 - 編集履歴管理(更新メッセージ + IP アドレス + JSON スナップショット) ## URL 構造 | URL | 内容 | |---|---| | `/` | バンド一覧 | | `/bands/of/:uuid` | バンド詳細 (UUID) | | `/bands/named/:slug` | バンド詳細 (slug) → UUID URL へリダイレクト | | `/bands/of/:uuid/edit` | バンド編集 | | `/bands/of/:uuid/history` | バンド編集履歴 | | `/bands/new` | バンド新規作成 | | `/artists/of/:uuid` | アーティスト詳細 (UUID) | | `/artists/named/:slug` | アーティスト詳細 (slug) → UUID URL へリダイレクト | | `/artists/of/:uuid/edit` | アーティスト編集 | | `/artists/of/:uuid/history` | アーティスト編集履歴 | | `/artists/new` | アーティスト新規作成 | ## API サーバー起動中に JSON API で操作できます。 ### バンド ```bash # 一覧取得 curl http://localhost:5173/api/bands # 新規作成 curl -X POST http://localhost:5173/api/bands \ -H "Content-Type: application/json" \ -d '{ "name": "バンド名", "area": "Tokyo", "status": "active", "description": "説明文", "links": [{"label": "Twitter", "url": "https://..."}], "artists": [{"id": "", "role": "Vocal"}], "message": "初回登録" }' ``` ### アーティスト ```bash # 一覧取得 curl http://localhost:5173/api/artists # 新規作成 curl -X POST http://localhost:5173/api/artists \ -H "Content-Type: application/json" \ -d '{"name": "アーティスト名", "links": [{"label": "Twitter", "url": "https://..."}]}' ``` `slug` は省略すると名前から自動生成。成功時は `201` + 作成したレコードの JSON を返します。slug 重複時は `409`。 ## CLI サーバー不要でローカルの DB に直接書き込みます。プロジェクトルートから実行してください。 ```bash # アーティスト登録 npm run add -- artist --name "アーティスト名" # バンド登録 npm run add -- band --name "バンド名" --area Tokyo --status active # JSON ファイルから一括インポート npm run add -- import --file data.json ``` ### 一括インポートの JSON 形式 ```json { "artists": [ {"name": "アーティスト A", "links": [{"label": "Twitter", "url": "https://..."}]} ], "bands": [ { "name": "バンド X", "area": "Tokyo", "status": "active", "artists": [{"name": "アーティスト A", "role": "Vocal"}], "links": [{"label": "Twitter", "url": "https://..."}] } ] } ``` `artists` を先に処理するので、`bands` 側でアーティスト名を参照できます。既存のアーティスト(名前一致)はスキップ。 ## 技術スタック - [React Router v7](https://reactrouter.com/) (SSR フレームワーク) - [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) (SQLite) - [Tailwind CSS v4](https://tailwindcss.com/) - TypeScript ## 開発 ```bash npm install npm run dev # 開発サーバー起動 (http://localhost:5173) npm run build # プロダクションビルド npm run typecheck # 型チェック ``` DB ファイル (`whois.db`) はプロジェクトルートに自動生成されます。 ## デプロイ ```bash git push hetzner master ``` Hetzner サーバー上で `git push` フックにより自動ビルド・再起動。