Skip to content

428lab/events

Repository files navigation

events lab

募集から配信まで全部やる、イベント運営ツール。

events lab は、アイディアソン/ハッカソンに限らず、あらゆるイベントの告知・参加募集・日程調整・当日の進行・採点・表彰までを一つで回せるイベント運営プラットフォームです。将来的には「会場を提供したい人」と「イベントを開きたい人」をつなぐマッチング、参加履歴をまとめたポートフォリオ、実績(アチーブメント)、ネイティブアプリまでを目指します。

公開URL: https://events.kojira.io

コンセプト

  • イベント運営のワンストップ化 — 募集から進行・採点・表彰まで分断なく。
  • 種類を問わない — ハッカソンに限らず、勉強会・交流会・コンテストなど汎用的に。
  • 当日がいちばん楽しい — プレゼン・採点・集計・表彰をリアルタイム演出付きで。
  • 続けるほど価値が貯まる — 参加・運営の履歴や受賞がポートフォリオ/実績になる。

技術スタック

  • フロント: React + Vite + MUI(TypeScript)
  • バックエンド: Hono on Cloudflare Workers(単一 Worker が SPA 配信・OG 注入・API を担当)
  • DB: Cloudflare D1(SQLite)+ 自前の薄いリポジトリ層 / 画像: R2
  • 認証: Discord / Google / GitHub OAuth2 + Nostr NIP-07(複数連携可)、セッション Cookie
  • リアルタイム: 2秒ポーリング(進行モード・採点状況の同期)
  • デプロイ: GitHub Actions(staging / production ブランチへの push で wrangler deploy)
  • モノレポ: pnpm workspace(apps/web / apps/server / packages/shared)、TypeScript 7

当初の設計ドキュメントは docs/design.md(冒頭に現在の実装との差分あり)、デザインルールは DESIGN.md

ロードマップ / 実装状況

✅ 実装済み

  • ログイン(Discord / Google / GitHub / Nostr NIP-07。複数連携・連携解除・引き取り)
  • イベントの作成・編集・削除、公開/非公開、Markdown 説明文
  • イベント画像のアップロード(OG サイズにクロップ・WebP 保存)と OG メタ注入
  • 短いシェア URL(/e/:slug
  • 公開トップ:開催中・開催予定・日程調整中・過去イベントの一覧(未ログイン閲覧可)
  • 日程調整(候補日に○△×で回答、参加最多ハイライト、曜日・日本の祝日表示、確定で開催日時に反映+回答者へ通知、確定後の結果表示は主催者がオンオフ可)
  • 参加登録・解除、参加者一覧、参加枠(複数枠・定員・先着順/抽選・抽選日時・手動当落)
  • キャンセル待ちの自動繰り上げ(先着枠)
  • マイページ・アカウント設定(ログイン方法の連携管理・ハンドル変更)
  • 公開ユーザープロフィール(/users/:id
  • コミュニティ(/c/:slug。アイコン/バナー、所属イベント一覧)
  • スライド(デッキ)の作成・編集・公開(/d/:slug。画像・テキスト配置)
  • アプリ内通知(抽選結果・繰り上げ・受賞・問い合わせ・日程確定)
  • 問い合わせ(ユーザー⇔運営のスレッド)
  • 成果物の登録(プレゼン資料 URL・ソースコード URL)
  • イベントごとのロール(参加者/スタッフ/審査員/観覧者)+アプリ運営管理者
  • 採点項目の管理、採点(参加者全員が採点可・自己採点の制限・修正可)
  • 集計プレビュー・採点進捗・締切、進行モード(通常/プレゼン/集計/表彰)
  • 表彰設定(ランキング賞・特別枠の CRUD・並べ替え・受賞者割当)と表彰式演出
  • staging 環境(ログイン必須ゲート)と CI/CD、セキュリティ強化一式

🚧 これから

  • チーム参加(チーム作成・リーダー・チーム単位の採点/成果物)
  • スライドとイベント進行の同期(プレゼンモード連動)
  • ブラウザから直接ライブ配信(WebRTC)。リモート視聴・観覧モードまで events lab 内で完結
  • アンケート機能(オフライン会場向けの大きな QR コード表示)
  • アチーブメント(例: イベント10回運営/初イベント頓挫/100人と交流 など多数の実績バッジ)
  • 会場マッチング(会場提供者の会場登録、無料/有料などの利用条件設定)
  • イベント運営者からの「会場募集」掲載とマッチング
  • ネイティブアプリ(iOS / Android)

開発

pnpm install
pnpm --filter @eventer/server exec wrangler d1 migrations apply eventer --local  # 初回とスキーマ更新時
pnpm dev   # web: vite (127.0.0.1:4280) + API: wrangler dev (:8787、vite が /api を proxy)
  • ローカルの環境変数はリポジトリ直下の .dev.vars(gitignore 済)。ENVIRONMENT=development にすると開発用ログイン(dev-login)が使える。
  • シークレット(OAuth クレデンシャル・SESSION_SECRET)は wrangler secret put で登録し、リポジトリには入れない。

デプロイ

GitHub Actions(.github/workflows/deploy.yml)がブランチ連動でデプロイします。

git push origin main:staging      # → staging (https://eventer-staging.kojiran.workers.dev、ログイン必須)
git push origin main:production   # → 本番 (https://events.kojira.io)。staging 確認後に実行

マイグレーションはデプロイ前に手動で適用します。

cd apps/server
pnpm exec wrangler d1 migrations apply eventer-staging --remote --env staging  # staging
pnpm exec wrangler d1 migrations apply eventer --remote                        # 本番

About

All-in-one event-ops platform — announce, recruit, run, score and award hackathons and any event, with real-time presentation and scoring.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors