技大祭(NUTFES / nutmeg)向けのリアルタイムクイズ大会アプリ。 モニタ(会場の大画面)・スマホ(参加者の手元ミラー)・管理者画面の3画面を、裏方1人の操作で一斉に切り替える。
- 何を作るか →
docs/実装要件/画面・要件.md - 使っている技術 →
docs/実装要件/技術スタック.md - API仕様(フロント/バックの契約) →
docs/実装要件/API仕様書.md
- Docker Desktop
- mise(ツールのバージョン管理+コマンド集約 →
docs/入門/mise入門.md) - Windowsの人は WSL2。リポジトリは WSL2の中に clone すること (Windows側フォルダだと Docker のホットリロードが遅い/効かない)
mise はインストールしただけでは効きません。 シェルに1行足して初めて、指定バージョンの Go / Node / pnpm にパスが通ります。
これをやらないと go: command not found や、自前の古い pnpm が動いてしまう事故が起きます(仕組み → docs/入門/mise入門.md §5)。
# bash を使っている人(WSL2の初期状態はこれ)
echo 'eval "$(~/.local/bin/mise activate bash)"' >> ~/.bashrc && exec bash
# zsh を使っている人(Macの初期状態はこれ)
echo 'eval "$(~/.local/bin/mise activate zsh)"' >> ~/.zshrc && exec zsh
~/.local/bin/miseの部分は mise を入れた場所。which miseで確認できる。
git clone https://github.com/NUTFes/quizApp.git
cd quizApp
mise trust # このリポジトリの mise.toml を信用する(初回のみ)
mise install # Go / Node / pnpm を指定バージョンで入れる
mise run up # 3つのコンテナ(frontend / backend / db)を起動mise install のあと、バージョンが揃っているか確認する:
go version # go1.25.x
node -v # v22.x
pnpm -v # 10.xここで command not found が出たら、上の「有効化」をやっていない。
起動したら:
| URL | 何が見えるか |
|---|---|
| http://localhost:5173 | フロント(「技大祭クイズ 🎉」が出れば成功) |
| http://localhost:3000/api/health | バックエンド({"status":"ok"} が返れば成功) |
止めるときは mise run down。困ったら mise run logs でログを見る。
使えるコマンド一覧は mise tasks。
quizApp/
├── frontend/ … 画面(Vite + React + TypeScript)
├── backend/ … サーバー(Go)。cmd/server が入口
├── docs/ … 確定版ドキュメント(要件・技術・API仕様)
├── dev_policy/ … 開発方針・検討過程のメモ
├── mise.toml … コマンド集約 + ツールのバージョン固定
└── docker-compose.yml … 3コンテナの編成
- 新しい機能は feature フォルダに新フォルダを切る(front:
src/features/、back:internal/)。既存フォルダに別機能を混ぜない - API仕様を変えるときは
docs/実装要件/API仕様書.mdを先に直す(実装とずれたら仕様書が正) mainへは直接pushせず、ブランチ→PR→レビュー1件→squash merge- コミット/PRは「何をしたか分かる日本語1行」でよい
詳しい手順 → docs/ガイドライン/開発フローガイド.md
| 名前 | 担当 | ひとこと |
|---|---|---|
| naoto-anzai | PM・インフラ・フロント・バック | みんなタスク割遅くなってごめん! |
- Tailwind CSS・React Router(最小構成が動いてから追加)
- 本番用の
docker-compose.prod.ymlとdocs/deploy.md