A collection of original, snackable multiplayer games designed for families and groups. Built for ages 6+ through adulthood, these games bring people together in the same physical space using a shared TV screen and individual phone controllers.
"Name it before the buzzer—but don't repeat anyone!"
A fast-paced category game where players race to type answers. The twist: duplicate answers are eliminated, so you need to think fast AND think different.
How it works:
- A category appears (e.g., "Things that are RED")
- 3-second think time (no typing allowed)
- 10-second typing phase
- Answers revealed simultaneously
- Duplicates eliminated - only unique answers score!
Learning focus: Vocabulary, quick thinking, creative thinking, spelling
"I can describe it in THREE words!" "I can do it in TWO!"
A word description bidding game where players bid on how FEW words they can use to describe a target word. The lowest bidder must deliver their clue, and the group votes on success.
How it works:
- Secret word revealed to all players
- Players bid lower (5→4→3→2→1 words)
- Lowest bidder describes using only their bid count
- Other players vote: did it work?
- Success = points based on difficulty, Failure = penalty
Learning focus: Vocabulary, risk assessment, wordplay, persuasion
Each game comes in 3 visual styles:
| Variant | Style |
|---|---|
| v1-playful | Vibrant colors, rounded buttons, playful animations, confetti effects |
| v2-minimal | Black/white with accent color, clean typography, subtle transitions |
| v3-retro | Arcade/game show aesthetic, pixel fonts, CRT glow effects |
- Backend: Node.js + Express.js
- Real-time: WebSocket (ws)
- QR Codes: qrcode
- Word Processing: wink-lemmatizer (for synonym detection)
- Testing: Jest
- Frontend: Vanilla HTML/CSS/JavaScript (no frameworks)
- Node.js v18 or higher
- A device to display the TV screen (computer, smart TV, or Chromecast)
- Phones/tablets for players to use as controllers
- All devices on the same Wi-Fi network
-
Clone the repository
git clone https://github.com/hafsau/QuickThink.git cd QuickThink -
Navigate to the game variant you want to run
# For QuickThink (recommended: v1-playful) cd QuickThink/v1-playful # Or for AliasAuction cd AliasAuction/v1-playful
-
Install dependencies
npm install
-
Start the server
npm start
-
Open the TV display
The terminal will show something like:
======================================== QUICK THINK - v1-playful ======================================== Server running at http://192.168.1.X:3000 TV Display: http://192.168.1.X:3000/tv ========================================Open the TV Display URL in a browser on your TV/main screen.
-
Players join via QR code
A QR code will appear on the TV screen. Each player scans it with their phone to join as a controller.
-
Start playing!
Once 3+ players have joined, the host can start the game.
.
├── Brief.md # Product & creative brief
├── ShortlistedConcepts.md # Game concept details
├── docs/
│ ├── architecture.md # Technical architecture
│ └── TESTING_INSTRUCTIONS.md # Testing guide
├── QuickThink/
│ ├── AGENT_INSTRUCTIONS.md # Build specifications
│ ├── v1-playful/ # Playful variant (most features)
│ ├── v2-minimal/ # Minimal variant
│ └── v3-retro/ # Retro variant
└── AliasAuction/
├── AGENT_INSTRUCTIONS.md # Build specifications
├── v1-playful/ # Playful variant
├── v2-minimal/ # Minimal variant
└── v3-retro/ # Retro variant
Each variant follows this structure:
v1-playful/
├── server.js # Main server with WebSocket handling
├── package.json # Dependencies and scripts
├── game/
│ ├── GameState.js # Core game state management
│ ├── categories.js # Category definitions (QuickThink)
│ ├── words.js # Word lists (AliasAuction)
│ ├── scoring.js # Scoring logic
│ └── wordValidation.js # Dictionary validation (v1 only)
├── public/
│ ├── tv/ # TV display (HTML/CSS/JS)
│ ├── controller/ # Phone controller (HTML/CSS/JS)
│ └── shared/ # Shared utilities
└── __tests__/ # Jest tests (v1-playful only)
Tests are available for QuickThink v1-playful:
cd QuickThink/v1-playful
# Run all tests
npm test
# Run tests in watch mode
npm test:watch
# Run with coverage report
npm test:coverage
# Run integration tests
npm test:integration- Connect your TV/display and phones to the same Wi-Fi network
- Start the game server on any computer on the network
- Open the TV URL in a browser on your display
- Have players scan the QR code with their phones
- Players: 3-6
- Round time: ~1-2 minutes
- Scoring: +1 for unique answers, 0 for duplicates
- Winning: Most points after all rounds
- Players: 3-6
- Round time: ~3-5 minutes
- Scoring: +1 to +5 for successful descriptions (based on word count), -2 for failures
- Winning: Most points after all rounds
- Host Audit: Host can challenge questionable answers
- Player Voting: Democratic validation of challenged answers
- Word Lemmatization: Catches word variations (e.g., "running" = "run")
- Audio System: Lobby music and sound effects
- Difficulty Tiers: Categories marked as Easy, Medium, or Hard
| Problem | Solution |
|---|---|
| QR code won't scan | Make sure phone and server are on same Wi-Fi network |
| Players can't connect | Check firewall settings, ensure port 3000 is accessible |
| Game feels laggy | Reduce number of players or check network connection |
| Audio not playing | Check browser autoplay settings, interact with page first |
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is for personal and educational use.
Built with fun in mind for families everywhere.