A real-time multiplayer drawing and guessing game inspired by Skribbl.io, built with modern web technologies and optimized for both desktop and mobile devices.
✨ Real-time Multiplayer - Play with friends using Socket.io
🎨 Smooth Drawing - Touch and mouse support with smooth brush strokes
📱 Mobile Optimized - Fully responsive design for all devices
🎯 Modern UI/UX - Beautiful dark theme with glassmorphism effects
🏆 Scoring System - Points based on speed of correct guesses
💬 Live Chat - Real-time chat and guessing system
Frontend:
- React 18 + TypeScript
- Vite (Fast build tool)
- Socket.io Client
- Vanilla CSS (Modern design system)
Backend:
- Node.js + Express
- Socket.io Server
- In-memory game state
- Node.js 16+ installed
- Install all dependencies: ```bash npm run install:all ```
Or install manually: ```bash
cd client npm install
cd ../server npm install ```
You need to run both the client and server:
Terminal 1 - Start Server: ```bash cd server npm run dev ``` Server will run on http://localhost:3001
Terminal 2 - Start Client: ```bash cd client npm run dev ``` Client will run on http://localhost:3000
- Open http://localhost:3000 in your browser
- Enter your name and choose an avatar color
- Create a new room or join an existing one with a room code
- Wait for at least 2 players to join
- Click "Start Game" to begin
- Take turns drawing and guessing!
Drawing:
- Select colors and brush sizes from the toolbar
- Draw on the canvas with mouse or touch
- Clear the canvas if needed
Guessing:
- Type your guess in the chat
- Faster correct guesses earn more points
- The word hint shows the number of letters
The game is fully optimized for mobile devices:
- Touch drawing with smooth strokes
- Responsive layout that adapts to screen size
- Mobile-friendly controls and UI elements
``` scribble/ ├── client/ # React frontend │ ├── src/ │ │ ├── components/ # React components │ │ ├── App.tsx # Main app component │ │ └── index.css # Design system │ └── package.json ├── server/ # Node.js backend │ ├── index.js # Server & Socket.io logic │ ├── words.js # Word list │ └── package.json └── package.json # Root scripts ```
MIT