Joel Hutchinson Logo Image
Joel Hutchinson

ChessLab

ChessLab is an chess analytics platform that gathers data from both Lichess and Chess.com, providing insights and performance trends to help players improve. It offers visual breakdowns, training suggestions, and tailored graphs based on their games on these platforms.

ChessLab Mockup

Project Overview

ChessLab is a full-stack application built to analyze and visualize a user’s chess data, automatically syncing with their profiles on Chess.com and Lichess. It fetches, collates, and processes large datasets to present meaningful insights like accuracy over time, opening success rate, blunder distribution, and more.

The frontend is built with React.js using TanStack Query (react-query) for asynchronous data fetching, caching, and synchronizing remote data. UI components are crafted using shadcn/ui to ensure accessible, consistent design across the app.

The backend is powered by FastAPI with strict validation via Pydantic models. It is designed to be fast, modular, and well-documented, with a strong emphasis on clean architecture and separation of concerns. One example of this was the use of the Adapter pattern used when importing data from various chess platforms, allowing us to de-couple the data fetching logic from the rest of the application (ChessDotComImportAdapter, LichessImportAdapter).

Tests for backend endpoints and core logic are written using Pytest, while frontend tests use Jest and the React Testing Library to verify that visual components and data rendering work seamlessly under different conditions.

Tools Used

React.js
TanStack Query
shadcn/ui
Jest
Python
FastAPI
Pydantic
Pytest
Lichess API
Chess.com API