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
- Python: Entirely managed by uv. The
make install
command will make sure that the right version ofuv
is installed in the "bin/" folder - which is not ignored by git. - Node.js: Make sure you have Node.js v18 installed.
We recommend 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:
https://github.com/users/olivierphi/projects/1/views/1
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.