Chess Insight
Chess Insight AI – Chess Analytics and Live Play
Chess data, an engine and live games in one app.
A full-stack chess platform that turns a match dataset into analytics dashboards, with live multiplayer games and a Stockfish opponent that runs in the browser.
- Type
- Full-stack app
- Team
- Solo project
- Core stack
- React · Vite · Redux Toolkit
- Live at
- chess-insight-ai.vercel.app
Problem and solution
The problem
A chess dataset is just a long list of games. It doesn’t show which openings win, how ratings move or how two players compare, and studying a position usually means switching to separate analysis and play tools.
The solution
Chess Insight loads the match data into MongoDB and answers those questions with aggregation pipelines behind interactive dashboards. In the same app you can replay any game, evaluate positions with Stockfish, and play live against another person or the engine.
How it’s built
- 01React + Redux appDashboards, board, replay and play
- 02Express APIAuth, analytics, search and admin
- 03Socket.IO + RedisLive rooms and matchmaking
- 04MongoDBMatches, players and users
What it does
Analytics
- Analytics dashboardOpenings, win conditions and rating trends, charted from server-side aggregations.
- Opening explorerBrowse openings and see how often each one wins.
- Players and leaderboardsProfiles, rankings and side-by-side player comparison.
- Match replayStep through any recorded game move by move.
Play
- Play the engineStockfish runs in a Web Worker, with a live evaluation of the position.
- Live multiplayerReal-time rooms with draw offers, resignation and chat.
- MatchmakingA queue pairs you with a random opponent.
Accounts
- Sign-inEmail and password with JWT, or Google sign-in.
- Admin dashboardUser management for administrators.
Under the hood
Server-authoritative games
Every move in a live room is replayed through chess.js on the server, so illegal and out-of-turn moves are rejected before the opponent sees them.
Built to scale out
Socket.IO runs on a Redis adapter and the matchmaking queue lives in a Redis sorted set, so players on different server instances can still be paired.
An engine without a server
Stockfish speaks UCI from a Web Worker, so analysis never blocks the interface or costs server time.
Analytics in the database
Stats are computed with MongoDB $match, $group and $bucket stages rather than in application code.
Production basics
Rate limiting, request validation and Swagger docs on the API, with CI building both apps on Node 20 and 22.
Built with
- React
- Vite
- Redux Toolkit
- Material UI
- Recharts
- react-chessboard
- chess.js
- Node.js
- Express
- MongoDB
- Mongoose
- Socket.IO
- Redis
- JWT
- Swagger
- Stockfish
- Docker
- GitHub Actions
- Vercel
- Render