A free and open-source "daily chess challenge" game, where you play against a computer opponent with pixel art units.
No analytics, no tracking, no ads - it was built purely for fun, and to check how far I could go with a reactive User Interface powered by htmx 🙂
The game lives at zakuchess.com.
- Programming language: Python
- Web framework: Django
- Database: SQLite
- Live user interface: htmx
- HTML templating: DOMinate
- CSS framework: Tailwind CSS
- TypeScript compilation: esbuild
- Units art: The Battle for Wesnoth 🛡️
- Chess logic on the server: python-chess
- Chess logic in the browser: Stockfish (compiled in WebAssembly by the wonderful folks at Lichess 💙)
- Talking of Lichess... Most of the daily challenges are adaptations of games from their open source database of chess games and puzzles, so let's double that heart: 💙💙
- Tests suite: pytest
- Hosting: Fly.io
Make sure you have Python 3.11 installed, as well as Node.js v18.
We recommend pyenv and nvm to handle specific versions of Python and Node.js, but you can of course use whatever you want :-)
$ python -V
Python 3.11.x # <-- check that you get this output 🙂
$ node -v
v18.x.x # ditto
Once you have these two installed, you can clone the repository and install the dependencies:
$ make install
$ make dev
You can take a look at the Makefile to see more commands.
The roadmap now lives in a GitHub project:
Improvements and bugfixes are welcome, but also new "daily challenges"!
When playing chess online with other people, if you find yourself in a position that you think could be interesting for others to try to solve ♞, please feel free to open an issue to discuss its addition to the daily challenges database. 🙂
This project is licensed under the GNU General Public License v3 - see the LICENSE file for details.