イベントの管理、全部やる。
events lab は、アイディアソン/ハッカソンに限らず、あらゆるイベントの告知・参加募集・当日の進行・採点・表彰までを一つで回せるイベント運営プラットフォームです。将来的には「会場を提供したい人」と「イベントを開きたい人」をつなぐマッチング、参加履歴をまとめたポートフォリオ、実績(アチーブメント)、ネイティブアプリまでを目指します。
公開URL: https://events.kojira.io
- イベント運営のワンストップ化 — 募集から進行・採点・表彰まで分断なく。
- 種類を問わない — ハッカソンに限らず、勉強会・交流会・コンテストなど汎用的に。
- 当日がいちばん楽しい — プレゼン・採点・集計・表彰をリアルタイム演出付きで。
- 続けるほど価値が貯まる — 参加・運営の履歴や受賞がポートフォリオ/実績になる。
- フロント: React + Vite + MUI(TypeScript)
- バックエンド: Hono(Node.js)+ SQLite(自前の薄いリポジトリ層)
- 認証: Discord OAuth2
- リアルタイム: SSE(進行モード・採点状況の同期)
- 公開: Cloudflare Tunnel
- モノレポ: pnpm workspace(
apps/web/apps/server/packages/shared)
開発と本番はディレクトリ・DB・環境変数を分離しています(詳細は docs/design.md、デザインルールは DESIGN.md)。
- Discord でログイン
- イベントの作成・編集・削除
- 公開/非公開の切り替え(編集画面のトグル)
- イベント画像のアップロード(OGサイズ 1200×630 にクロップ・WebP保存)
- SNS シェア時の OG 画像対応(公開イベント)
- 公開トップ:開催中・開催予定イベントの一覧(開催直前順・ページング)
- 公開イベントは未ログインでも閲覧可(参加者数・参加者一覧の表示)
- 参加登録・解除、参加者一覧
- 参加枠(複数枠・定員・先着順/抽選)※抽選は即時ランダム実行のみ
- マイページ(開催中・過去に参加したイベント)
- 成果物の登録(プレゼン資料URL・ソースコードURL)
- イベントごとのロール(参加者/スタッフ/審査員/観覧者)
- アプリ運営管理者ロール(環境変数で Discord ID 指定)
- 採点項目の管理(4段階・デフォルト項目)
- 採点(自己採点の制限、採点の修正)
- 集計プレビュー・採点進捗・締切
- 進行モード(通常/プレゼン/集計/表彰)と SSE によるリアルタイム連動・強制遷移
- プレゼンモード(発表チーム表示・右ペイン採点・参加者アイコン)
- 表彰設定(ランキング賞・特別枠の CRUD、賞名/内容の編集、ドラッグ並び替え、受賞者割当)
- 表彰式の演出(下位賞から段階発表・レーダーチャート・紙吹雪・ドラムロール/ファンファーレ)
- 抽選の抽選日時設定と、スタッフによる当選操作画面(手動当落・結果確認)
- キャンセル待ちの自動繰り上げ
- チーム参加(チーム作成・リーダー・チーム単位の採点/成果物)
- 資料アップロード/Google スライド連携で、サイト上でそのままプレゼン(スライド表示・進行同期)
- アンケート機能(オフライン会場向けの大きな QR コード表示)
- ユーザーのポートフォリオページ(運営・参加したイベントと受賞結果の一覧)
- アチーブメント(例: イベント10回運営/初イベント頓挫/100人と交流 など多数の実績バッジ)
- ハッカソン以外も含む汎用イベント進行への対応強化
- 会場マッチング(会場提供者の会場登録、無料/有料などの利用条件設定)
- イベント運営者からの「会場募集」掲載とマッチング
- ネイティブアプリ(iOS / Android)
pnpm install
pnpm dev # web(127.0.0.1:4280) + API(4281)開発では Discord ログインと開発用ログインの両方が使えます(.env.example 参照)。
本番は開発ツリーとは別ディレクトリで稼働し、Cloudflare Tunnel で公開します。
pnpm build && pnpm start # 本番サーバー(:8080)
pnpm tunnel # Cloudflare Tunnel