9b7109965860ef1e1b3dff0bc66351395d1a93ad
Made-with: Cursor
Who Did It?
A Clue-themed character preference collector for game parties. Players enter their name, rank their top 3 character choices, and an admin view assigns players to characters (with team overflow when needed).
Tech Stack
- Frontend: React (Vite)
- Backend: Node.js / Express
- Persistence: JSON file (no database)
Prerequisites
- Node.js 18+
Setup
1. Install dependencies
cd client
npm install
cd ../server
npm install
2. Environment
Create server/.env (or copy from server/.env.example):
PORT=3001
ADMIN_PASSWORD=clue2024
ALLOWED_NAMES=Jim,Colleen,Rory,Gigi,Meghan,Christine,Bob,Rachel,Chuck
3. Run development servers
Terminal 1 – server:
cd server
npm run dev
Terminal 2 – client:
cd client
npm run dev
Open http://localhost:5173 (or the URL Vite prints). The client proxies /api to the server on port 3001.
Routes
| Route | Purpose |
|---|---|
/ |
Name entry (must be in allowed list) |
/rank |
Rank top 3 character choices |
/thanks |
Confirmation after submitting picks |
/admin |
Results dashboard, Assign Teams, Clear |
Configuration
- ALLOWED_NAMES: Comma-separated list of player names. Only these names can submit picks. Case-insensitive.
- ADMIN_PASSWORD: Required to clear all submissions (admin panel).
Docker
See DOCKER.md for build, push, and run instructions.
.\docker-build.ps1
.\docker-push.ps1
Languages
JavaScript
69.1%
CSS
15.4%
PowerShell
6.1%
Dockerfile
3.9%
Shell
3.8%
Other
1.7%