Skip to content

Repository files navigation

Chess Analyzer

Browser-based chess analysis application built with React and Stockfish.

The project imports games from PGN or supported chess platforms, runs engine analysis in the browser, and presents move-by-move evaluations through an interactive board, evaluation graph, and move classifications.

Live demo: https://chess-analyze.netlify.app/

Engineering focus

This project was built to explore several frontend engineering problems beyond a standard CRUD application:

  • running a chess engine in the browser without blocking the UI;
  • coordinating Stockfish analysis with React application state;
  • parsing and replaying PGN move history;
  • visualizing engine evaluations across an entire game;
  • importing external game data from Chess.com and Lichess;
  • keeping board navigation, engine output, and evaluation charts synchronized.

Core features

  • PGN import and move navigation
  • Chess.com and Lichess game import
  • Stockfish engine analysis using browser-compatible JavaScript/WASM assets
  • interactive chess board with move controls
  • evaluation graph and advantage display
  • move classification and game summary
  • analysis export for later review

Stack

  • React 19
  • JavaScript
  • Stockfish / WebAssembly
  • Chess.js
  • Recharts
  • Tailwind CSS
  • Web Workers

Stockfish assets are stored under public/scripts/ and the application is configured through CRACO.

Screenshots

Chess Analyzer interface

Engine analysis view

Running locally

git clone https://github.com/HaikalE/React-Chess-Analyze.git
cd React-Chess-Analyze
npm install
npm start

For a production build:

npm run build

Repository notes

The repository includes the browser-compatible Stockfish assets required by the current implementation. Engine evaluation depth affects analysis time and browser CPU usage.

Move classifications are application-level heuristics built on top of engine evaluation changes. They should not be interpreted as an official Chess.com or Lichess classification system.

What I learned

The main technical challenge was not rendering a chess board; it was managing a CPU-intensive analysis workflow in a responsive browser application. The project required separating engine work from the UI thread, translating engine output into application state, and keeping multiple representations of the same game position consistent.

Author

Muhammad Haikal Rahman
GitHub · Portfolio · LinkedIn

About

Browser-based chess analyzer using React, Stockfish, Web Workers, PGN import, and interactive evaluation charts.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages