Skip to main content
Project 06 · Full-stack app

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
Overview

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.

Architecture

How it’s built

  1. 01React + Redux appDashboards, board, replay and play
  2. 02Express APIAuth, analytics, search and admin
  3. 03Socket.IO + RedisLive rooms and matchmaking
  4. 04MongoDBMatches, players and users
Features

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.
Technical highlights

Under the hood

  1. 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.

  2. 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.

  3. An engine without a server

    Stockfish speaks UCI from a Web Worker, so analysis never blocks the interface or costs server time.

  4. Analytics in the database

    Stats are computed with MongoDB $match, $group and $bucket stages rather than in application code.

  5. Production basics

    Rate limiting, request validation and Swagger docs on the API, with CI building both apps on Node 20 and 22.

Tech stack

Built with

Frontend
  • React
  • Vite
  • Redux Toolkit
  • Material UI
  • Recharts
  • react-chessboard
  • chess.js
Backend
  • Node.js
  • Express
  • MongoDB
  • Mongoose
  • Socket.IO
  • Redis
  • JWT
  • Swagger
Engine and DevOps
  • Stockfish
  • Docker
  • GitHub Actions
  • Vercel
  • Render
Screens