CTFのスコアや状況をリアルタイムに可視化するためのシステムです。
pnpmを使用したモノレポ構成になっています。
apps/server: バックエンドサーバー (tRPC, Prisma, WebSocket)apps/live: 配信・会場投影用ライブビュー (Next.js)packages/shared: 各パッケージで共有される型定義とZodスキーマ
このシステムはCTFdからデータを取得して可視化するため、まずCTFdのセットアップが必要です。 開始前にCTFdのインフラ上にチームが作成しチームのIDを確認することと、APIトークンまたはセッションクッキーを取得しておいてください。
pnpm install
pnpm db:pushapps/server/.env.example を apps/server/.env に、apps/live/.env.example を apps/live/.env にコピーし、CTFdのURLやAPIトークンを設定してください。
apps/live/public/icons ディレクトリに、チームIDをファイル名とする画像ファイルを配置してください。例: 1.png, 2.png ...
ルートディレクトリで以下のコマンドを実行できます。
- 全ての開発サーバーを起動:
pnpm dev - サーバーのみ起動:
pnpm dev:server - Live (3001番) のみ起動:
pnpm dev:live - 全てのパッケージをビルド:
pnpm build - ビルドされたLiveビューを本番モードで起動:
pnpm start:live
本番中はpnpm dev:serverでサーバーは常にデータをCTFdからポーリングしている状態にし、pnpm start:liveでライブビューを起動してください。
- ブラウザで
http://localhost:3000にアクセスすると、スコアボードが表示されます。スコアの推移や解いた問題、チームの詳細などをリアルタイムで確認できます。 - 新しい正解が提出されると、通知が表示され、スコアボードが自動的に更新されます。
- Auto Modeを有効にすると、一定間隔で表示する内容が切り替わります。切り替え間隔は
apps/live/.envのNEXT_PUBLIC_AUTO_INTERVALで設定できます。






