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.