Skip to content

noahlz/ligeon

Repository files navigation

Ligeon

Ligeon is a simple chess game browser / study tool built with Electron, React, and SQLite. Import, browse and replay chess games from plaintext PGN game files.

Node.js CI

Ligeon Screenshot

Motivation

My chess coach recommended reviewing master game collections to learn patterns and opening themes. However, existing free browsers are limited: ChessBase costs money, SCID vs. PC had a dated interface and was hard to use, and Lichess studies are limited to 64 chapters.

So, rather than use any of these, I did what any reasonable person would do: build my own application.

Mostly this is an experiment in using Claude Code to create a real Electron/React application. Lichess studies are still my tool of choice.

Limitations

This app imports "plain" PGN data only. It does not pull in comments, variations or annotations. This is becaus such additions to chess game moves are generally considered creative work and thus copyright protected (mere game moves and headers are "facts" and thus not copyright-protected).

Additional design choices:

  • No nested variations (single-level branches only)
  • Simple comments and basic annotations.
  • No Stockfish engine integration (you should really analyze positions without an engine!)

If you need the full feature set of Lichess studies, this is not it. However, if you need that, you can easily push positions and full games up to Lichess for further analysis.

Why "Ligeon?"

Its a Lichess-based PGN browser.

Development

Prerequisites

  • Node.js 24+
  • npm

Install Dependencies

npm install

Run Tests

Run just the tests:

npm test

To run all TypeScript checks, ES linting, dead code detection (knip) and vitest coverage checks:

npm run check

Run Dev App

Launch the Electron app with hot-reload:

npm run app

Package

npm run package

Creates distributable app bundles in release/.

CLI Tool: PGN to SQLite

Convert PGN files to SQLite databases for exploration and testing.

Usage:

npm run pgn-to-sqlite -- <pgn-file> [output-dir]

Example:

npm run pgn-to-sqlite -- resources/sample-games/tal-life-and-games.pgn ./release

Attribution

Sample Games

Sample games sourced from brianerdelyi/ChessPGN

Sounds

Sound files in public/sounds/ copied from Lichess, licenced under CC BY-NC-SA 4.0 by EdinburghCollective.

See: lichess-org/lila/COPYING.md

Piece Sets

Chess piece SVGs in public/pieces/ sourced from lichess-org/lila.

See: lichess-org/lila/COPYING.md

Set Author License
cburnett Colin M.L. Burnett GPLv2+
merida Armando Hernandez Marroquin GPLv2+
alpha Eric Bentzen Free for personal non-commercial use
companion David L. Brown Freeware
fresca sadsnake1 CC BY-NC-SA 4.0
mpchess Maxime Chupin GPL3v3+
xkcd Randall Munroe CC BY-NC-SA 2.5

Icons

This application uses Lucide icons, including for the application logo. License

Authors

@noahlz
@claude

License

GPLv3 (because it uses Chessground)

About

Chess Game Browser built with Lichess components

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages