Chess Endgame Training is a web application to practice a variety of well organized chess endgames.
-
It allows you to play against the Syzygy tablebases or against the Stockfish 16 NNUE engine.
-
The application tracks your personal record in each position. It also allows you to solve each position automatically and review the movements once completed.
-
It includes challenges of mate and also of draw, for both white and black.
-
Save configurations and progress to Google Drive to avoid losing them.
-
When reaching a trivial position, it doesn't force you to solve it manually (it prompts you to resolve those last moves automatically without penalizing you for it).
-
Parameterize Stockfish by depth and time.
-
List of moves: allows you to select a move and continue another line from there.
-
Manual mode: to move opponent's pieces to explore lines not suggested by syzygy or Stockfish: "what if...?"
-
Uses the chessground board which allows you to draw circles and arrows.
-
Light and dark themes.
-
Multiple piece styles.
-
Several board colors to choose from.
-
Multi language (currently English/Spanish/Russian).
-
Board image capture.
-
Copy FEN and PGN to clipboard.
-
Button to open position analysis on Lichess.
It is distributed in both Android App and Progressive Web App. The Web App allows to open an arbitrary position from a FEN string indicating the objective to achieve (checkmate or draw) : https://chess-endgame-trainer.mooo.com/fen/FEN_STRING/TARGET
TARGET is checkmate by default. Examples:
https://chess-endgame-trainer.mooo.com/fen/8/4p1p1/8/7k/2qN3B/4P1P1/2B4K/8 w - - 0 1
https://chess-endgame-trainer.mooo.com/fen/8/5qpB/5P2/4B2N/8/p7/P2k4/K7 w - - 0 1/draw
Optionally, you can change roles and play with the opponent pieces:
http://chess-endgame-trainer.mooo.com/fen/8/3k4/8/3K4/3P4/8/8/8 b - - 0 1?player=w
You can also play random positions to achieve checkmate in 1 to 10 moves.
http://chess-endgame-trainer.mooo.com/checkmate/3
Following software and resources has been used:
-
ECO Chess Opening Codes Endgame database: Database of chess endgames
-
chess.js: A Javascript chess library for chess move generation/validation, piece placement/movement, and check/checkmate/draw detection
-
chessground: A Javascript chess board
-
lila-stockfish-web: WASM implementation of Stockfish chess engine used in Lichess
-
Syzygy endgame tablebases: Online database with information for all endgame positions with up to 7 pieces
-
Typescript: JavaScript with syntax for types
-
Ionic Framework: the mobile sdk for the web
-
Alpine.js: lightweight JavaScript framework
-
Alpine i18n: Internationalization (i18n) support for Alpine.js
-
Navigo: a simple vanilla JavaScript router
-
howler.js: JavaScript audio library for the modern web
-
dom-to-image: generates an image from a DOM node using HTML5 canvas
-
Vite: fast build tool
-
Logo: designed by Inipagi from Iconfinder
-
Pacifier: designed by Smashicons from Flaticon
-
Chess piece sets: alpha (Eric Bentzen), california (Jerry S), cburnett (Colin M.L. Burnett), chess7 (Alexander Sizenko), chessnut (Alexis Luengas), chicago (Benjamin Friedrich), companion (David L. Brown), fantasy (Maurizio Monge), iowa (Benjamin Friedrich), kosal (philatype), leipzig (Armando Hernández Marroquin), letter (???), merida (Armando Hernández Marroquin), mono (???), oslo (Benjamin Friedrich), pirouetti, pixel (therealqtpi), reilly (Reilly Craig), riohacha (???), shapes (Jimmie Elvenmark), spatial (Maurizio Monge), symmetric (Arcticpenguins)
-
Russo One: text font by Jovanny Lemonad
-
Move sound: from Lichess static resources
-
Capture sound: from Lichess static resources
-
Success sound: shinephoenixstormcrow from freesound.org
-
Fail sound: Bertrof from freesound.org
A Docker image is provided to bootstrap a development environment:
Build image
./exec.sh build-img
Start development server
./exec.sh start
Build for production
./exec.sh build-app
If you don't want to use Docker, you can install Node.js (latest LTS) and a package manager (i.e. pnpm) to install dependencies, start the development server and build for production.
A TWA has been generated with bubblewrap:
bubblewrap init --manifest https://chess-endgame-trainer.mooo.com/manifest.json
Building:
bubblewrap build --skipSigning
Signing:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore [PATH_TO_KEYSTORE] ./app-release-unsigned-aligned.apk [KEY_ALIAS]
zipalign -v 4 ./app-release-unsigned-aligned.apk myapp-aligned.apk
apksigner sign --ks [PATH_TO_KEYSTORE] --v1-signing-enabled true --v2-signing-enabled true myapp-aligned.apk
The file .well-known/assetslinks.json includes the Sha256 fingerprint of the certificate used to sign the apk:
keytool -list -v -keystore [PATH_TO_KEYSTORE]
This project has been carried out as part of the Final Degree Project in the Bachelor's Degree in Computer Engineering at UNIR.