A full-stack multiplayer chess platform with real-time gameplay, user authentication, and player rankings.
NOTE: This is an early learning project — expect some bugs (hence the name Glitchess). A new version with an updated stack is planned at github.com/govindpvenu/glichess. This repo is now a public archive for reference. Feel free to explore and laugh at my past mistakes!
Try it live: glitchess.vercel.app
📌: Backend is deployed on Render's free tier. First request may take 30-60 seconds due to cold start.
| Repository | Description |
|---|---|
| glitchess-frontend | React frontend application |
| glitchess-backend | Node.js/Express backend server |
- Play Online — Real-time multiplayer chess with other players via WebSocket connections
- Human vs Computer — Play against AI opponent (random move engine)
- Human vs Human (Local) — Two players on the same device with move validation and highlights
- Email registration with OTP verification
- Google OAuth integration
- Secure password hashing with bcrypt
- JWT-based session management
- Customizable user profiles
- Game statistics tracking and ratings
- Global player rankings with sortable data tables
- Full chess rule enforcement (checkmate, stalemate, draw, threefold repetition)
- Move validation with illegal move prevention
- Move history
- Game timers
- Room-based matchmaking with shareable game IDs
- Sound effects for moves and captures
- Dark and light theme support
- Resizable panels for board and move history
- Toast notifications for game events
| Technology | Purpose |
|---|---|
| React 18 | UI Framework |
| TypeScript | Type Safety |
| Vite | Build Tool |
| TanStack Router | File-based Routing |
| Redux Toolkit | State Management |
| RTK Query | API Caching |
| Tailwind CSS | Styling |
| shadcn/ui (Radix) | UI Components |
| chess.js | Game Logic |
| react-chessboard | Chess Board |
| Socket.io Client | Real-time Communication |
| Technology | Purpose |
|---|---|
| Node.js + Express | Server Framework |
| TypeScript | Type Safety |
| MongoDB + Mongoose | Database |
| Socket.io | WebSocket Server |
| Passport.js | Authentication |
| Resend | Email Service |
| bcryptjs | Password Hashing |
This project demonstrates key concepts in modern web development:
- Real-Time Communication — WebSocket implementation with Socket.io for live multiplayer gameplay
- Full-Stack TypeScript — Type-safe development across frontend and backend
- Authentication & Security — JWT tokens, OAuth 2.0 (Google), password hashing, and session management
- State Management — Redux Toolkit with RTK Query for efficient API caching
- RESTful API Design — Structured endpoints for authentication, user management, and game operations
- Database Design — MongoDB schema design with Mongoose for user data and statistics
- Modern React Patterns — Hooks, custom hooks, and component composition
- File-Based Routing — TanStack Router with protected and public route patterns
- UI/UX Design — Responsive design with Tailwind CSS and accessible shadcn/ui components
- Create an account or login
- Click "Play Online" from the home screen
- Choose your color (white/black) and create a room
- Share the Game ID with your opponent
- Your opponent joins using the Game ID
- Play chess in real-time!
Contributions are welcome! Please feel free to submit a Pull Request to the respective repository.
This project is open source and available under the MIT License.
- chess.js — Chess game logic
- react-chessboard — Beautiful chess board component
- shadcn/ui — Accessible UI components
- Socket.io — Real-time bidirectional communication
Made with ❤️ by Govind P Venu
