supertorpe / chessendgametraining

Chess Endgame Traininng: app to practice a variety of well organized set of chess endgames. From elementary to the most complex endgames, you can practice until you learn how to face all of them.
https://chess-endgame-trainer.mooo.com
GNU General Public License v3.0
83 stars 19 forks source link
alpine-js android app chess endgame ionic mobile pwa stockfish syzygy training twa typescript

Chess Endgame Training

Get it on Google Play

Chess Endgame Training is a web application to practice a variety of well organized chess endgames.

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

Screenshots

3dparty resources

Following software and resources has been used:

Development

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.

TWA / Android bundle

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]