- 🎨 Interactive Drawing Canvas - Smooth drawing with mouse/touch support
- 🔄 Smart Reconnection - 10-second grace period to rejoin without losing progress
- ⏱️ Timed Rounds - Fast-paced gameplay with countdown timers
- 🏆 Scoring System - Points for quick guesses and successful drawings
- 👥 Multiple Rooms - Private lobbies with password protection
- 🔐 JWT Authentication - Secure token-based user sessions
- 📱 Responsive Design - Works on desktop and mobile devices
- ⚡ Real-time Communication - Instant updates via WebSockets
- 🖌️ Customizable Drawing Tools - Choose colors, brush sizes, and more
- 🗣️ Voice Input - Use speech-to-text to chat
- 💡 Smart Hints – Automatically get helpful hints if you're stuck for too long
- Create or Join a game room with a password
- Wait for Players - At least 2 players needed to start
- Take Turns Drawing - Choose from 3 word options when it's your turn
- Guess Words - Type your guesses in the chat
- Earn Points - Faster guesses = more points!
- Win the Game - Highest score after all rounds wins
- First to guess: 120 points
- Second to guess: 110 points
- Third to guess: 100 points
- Late guess: 80 points
- Drawer bonus: 50 points (when someone guesses)
- Drawer penalty: -60 points (if nobody guesses)
- React 18 with TypeScript
- Socket.IO Client for real-time communication
- HTML5 Canvas for drawing functionality
- Ant Design for UI components
- Tailwind CSS for styling
- Node.js with Express
- Socket.IO for WebSocket communication
- MongoDB with Mongoose for data persistence
- JWT for authentication
- bcrypt for password hashing
- Node.js (v18+ recommended)
- MongoDB (local or Atlas)
- npm
-
Clone the repository
git clone https://github.com/devAmaresh/mystidraw.git cd mystidraw -
Install backend dependencies
cd backend npm install -
Install frontend dependencies
cd ../frontend npm install -
Setup environment variables
Create
.envin the backend directory:PORT=3000 JWT_SECRET=your_super_secret_jwt_key_here MONGODB_URI=mongodb://localhost:27017/mystidraw FRONTEND_URL=http://localhost:5173 NODE_ENV=development
-
Run the application
Backend (Terminal 1):
cd backend npm run devFrontend (Terminal 2):
cd frontend npm run dev -
Open your browser
Navigate to
http://localhost:5173
mystidraw/
├── backend/
│ ├── controllers/ # Route controllers
│ ├── handlers/ # Socket event handlers
│ ├── middleware/ # Auth & validation middleware
│ ├── models/ # MongoDB models
│ ├── routes/ # Express routes
│ ├── services/ # Game logic & state management
│ └── utils/ # Helper functions
├── frontend/
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Main page components
│ │ └── utils/ # Frontend utilities
│ └── public/
└── README.md
- Drawing Tools: Pencil, eraser, color picker
- Brush Sizes: Adjustable stroke width (1-20px)
- Color Palette: 12 preset colors + custom color picker
- Clear Canvas: Reset drawing area
- Real-time Sync: All players see drawings instantly
You can modify game settings in backend/utils/gameConfig.js:
export const GAME_CONFIG = {
MIN_PLAYERS: 2,
MAX_PLAYERS: 8,
TOTAL_ROUNDS: 3,
TURN_TIME: 80, // seconds
PREPARATION_TIME: 5, // seconds
WORD_SELECTION_TIME: 10, // seconds
};- Connect your GitHub repo to Vercel
- Set build command:
npm run build - Set environment variables in Vercel dashboard
- Connect your GitHub repo
- Set start command:
npm start - Add environment variables in dashboard
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
- ✅ You may share and redistribute the material
- ❌ You may not use this project for commercial purposes
- ❌ You may not modify or create derivative works
- ✅ You must give appropriate credit
See the LICENSE for details.
Amaresh - @devAmaresh
Project Link: https://github.com/devAmaresh/mystidraw
Live Demo: https://doodle-dash-kappa.vercel.app/