A full-stack real-time multiplayer word game built with TypeScript, React, and Socket.io. Inspired by the original Bombparty.
Bombparty Clone is a fast-paced word game where players compete in real-time to form valid words containing randomly generated letter combinations. The game features customizable settings, a scoring system, and smooth multiplayer gameplay powered by WebSockets.
- 🎮 Real-time Multiplayer - Play with friends using Socket.io
- ⚡ Instant Gameplay - No lag, responsive UI with React 19
- 🎯 Customizable Rules - Adjust timer, lives, and difficulty settings
- 📊 Score Tracking - Keep track of player statistics
- 🎨 Beautiful UI - Built with React Bootstrap and custom styling
- 🌙 Dark Mode - Enjoy the game in any lighting condition
- 🔊 Sound Effects - Immersive audio feedback with Howler.js
- 📱 Responsive Design - Play on desktop and mobile devices
- Framework: React 19 with TypeScript
- Build Tool: Vite
- UI Components: React Bootstrap
- State Management: Zustand
- Real-time Communication: Socket.io Client
- Testing: Vitest with React Testing Library
- Runtime: Node.js
- Framework: Express with Socket.io
- Database: SQLite with better-sqlite3
- Logging: Pino
- Language: TypeScript
- Hosting: Fly.io
- Environment: Docker
- Bun (recommended) — for running the backend, installing deps, and tests
- Node.js 18+ (only required if you run with Node instead of Bun)
- Clone the repository
git clone https://github.com/Laosing/bombparty-clone.git
cd bombparty-clone- Install dependencies
# Install root + client dependencies using Bun
bun installStart both the backend and frontend in development mode (uses Bun for the server and Vite for the client):
# From project root
bun run devThis will start:
- Backend on
http://localhost:8080 - Frontend on
http://localhost:3000
# Build the client bundle
cd client && bun run build
# (Optional) Build any server artifacts if you use tsc or similar
# For Bun-only runtime this may not be required; see package.json scriptsRun the test suite using Bun for server tests and the client test runner as configured:
# Run client tests (uses Vitest/Vite config)
cd client && bun test
# Run server tests (if any) with Bun
bun run test- Create or Join a Room - Start a new game or enter a room code
- Customize Settings - Adjust timer, lives, and difficulty before playing
- Form Words - Type words that contain the current letter blend
- Earn Points - Valid words earn points, extra letters earn bonuses
- Survive - Lose a life if you can't form a word in time
- Win - Be the last player(s) standing
Game settings can be customized in the room settings panel:
- Timer: Countdown duration per turn (default: 10 seconds)
- Lives: Starting lives per group (default: 2)
- Hard Mode: Enable harder difficulty after X rounds (default: 5)
- Letter Blend Counter: Changes letter blend after X valid words
The backend exposes a Socket.io API for real-time communication:
joinRoom- Join a game roomjoinGame- Join the current gameleaveGame- Leave the current gamecheckWord- Validate a wordsetSettings- Update room settingsstartGame- Start the countdownstopGame- Stop the game
getRoom- Receive updated room statewordValidation- Word validation resultboom- Time's up notificationwinner- Game winner announcementmessages- Chat messages
Contributions are welcome! This is a personal open-source project, so feel free to:
- 🐛 Report bugs and issues
- 💡 Suggest new features
- 🔧 Submit pull requests
- 📝 Improve documentation
MIT License - See LICENSE file for details
- Inspired by Bombparty by JKLM.fun
- Built with modern web technologies and best practices
- Special thanks to the open-source community
For questions, feedback, or support:
- Open an issue on GitHub
- Visit the live demo at bombparty-clone.fly.dev
Made with ❤️ by Drew