This is a conference game built with Next.js for DevLearn 2025.
Status: Connected to Supabase database for live conference use. A gameful, live, multi-player simulation where attendees act as an AI agent and pick the right tool for the job.
- Sprint Mode: 5-minute continuous gameplay
- Tool Selection: Choose the best AI tool for each scenario
- Real-time Scoring: Accuracy + Speed scoring algorithm
- Live Leaderboards: Auto-refreshing rankings
- Mobile-First: Optimized for phones and tablets
- Accessibility: WCAG AA compliant with ARIA support
npm install
- Create a new Supabase project
- Run the SQL schema from
db/schema.sql
in your Supabase SQL editor - Copy your project URL and anon key
cp .env.example .env.local
Edit .env.local
with your Supabase credentials:
NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
npm run dev
Open http://localhost:3000 to see the application.
- Join: Visit
/join
and enter a codename - Play: Navigate to
/play
for continuous scenarios - Results: Check
/me
for personal stats - Leaderboard: View
/leaderboard
for live rankings
- Admin Dashboard: Visit
/admin
for projector-friendly view - Live Metrics: Monitor submissions/min, player count, scores
- QR Code: Direct players to the join URL
- Next.js 14 - React framework with App Router
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first styling
- Supabase - PostgreSQL database and real-time features
- Zod - Runtime type validation
/content/ # JSON content packs (tools, scenarios)
โโโ deck.tools.json # AI tool definitions
โโโ scenarios.json # Game scenarios
/src/app/ # Next.js app router
โโโ api/ # API route handlers
โโโ join/ # Player registration
โโโ play/ # Main game interface
โโโ me/ # Personal results
โโโ leaderboard/ # Live rankings
โโโ admin/ # Facilitator dashboard
/src/lib/ # Core utilities
โโโ types.ts # TypeScript definitions
โโโ scoring.ts # Game scoring logic
โโโ content.ts # Content loading
โโโ supabase.ts # Database client
/src/components/ # Reusable UI components
โโโ tool-card.tsx # Tool selection cards
โโโ timer.tsx # Game timer
/db/ # Database schema
โโโ schema.sql # Supabase table definitions
The game uses a dual-factor scoring system:
- Compares tool attributes to scenario targets
- Uses weighted differences across 10 attributes
- Range-aware normalization (1-5 scale, 1-4 for application)
- Based on reaction time from scenario display to submission
- 25-second default timer with configurable limits
- Faster responses score higher
finalScore = 100 * (0.7 * accuracy + 0.3 * speed)
Each tool includes:
- Attributes: 10 ratings (ease, flexibility, collaboration, etc.)
- Category: no-code, low-code, vibe-code, code
- Notes: Description for players
Each scenario includes:
- Targets: Ideal attribute values
- Weights: Importance of each attribute
- Timer: Custom time limit (default 25s)
- Push code to GitHub
- Connect repository to Vercel
- Add environment variables in Vercel dashboard
- Deploy automatically
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
npm run dev
- Start development servernpm run build
- Build for productionnpm run start
- Start production servernpm run lint
- Run ESLintnpm run typecheck
- Check TypeScript types
- Start the development server
- Open multiple browser tabs to simulate players
- Use
/admin
to monitor the game session - Check
/leaderboard
for live updates
- Project
/admin
dashboard on main screen - Display QR code pointing to
/join
- Test with a few early arrivals
- Start timer countdown
- Monitor submissions per minute
- Watch live leaderboard updates
- Prepare for debrief with heatmap data
- Show final leaderboard
- Discuss attribute trade-offs
- Highlight tool spectrum (no-code โ code)
The admin dashboard provides:
- Real-time metrics: Submissions/min, active players
- Score distribution: Median accuracy and latency
- Attribute heatmap: Where players struggle most
- Leaderboard: Top performers and team average
- No PII required: Only codenames stored
- Session-based: Data isolated per conference
- Rate limiting: Prevents spam submissions
- Row-level security: Supabase policies enabled
MIT License - Educational demo for conference use. Replace example tools/scenarios with your own content as needed.
This project follows the specifications from the original README. To modify:
- Update content in
/content/
directory - Adjust scoring weights in
/src/lib/scoring.ts
- Customize UI in
/src/components/
and/src/app/
For questions or improvements, please refer to the detailed specification in AI_Tool_Match_README.md
.