58
points
Hi HN! I built a simple chess game so that my son in Singapore can play chess with his grandfather in China.
Why? There is currently no service or open source software that has all of the following:
* All processing and assets on a single server (Critical to workaround a firewall) * No email account required (Chinese Internet services typically login via WeChat) * Works on Android browser * Simple to install and config
I built it, together with Claude Code, using simple and boring technologies (Django + Client-side JS). I hope that when you use it, you will find it simple to understand (everything is done server-side), deploy, play, and maybe even hack. :)
Live demo: https://family-chess.quee.org (Please be gentle, it's a tiny 2GB VPS!)
PS: even has container images, e.g. https://github.com/lichess-org/lila-docker so before I could finish writing this message I had my own instance running.
Running something as complex as Lichess is... unwieldy when all I wanted was something I can quickly spin up in 5 mins on nearly any server, with a simple mobile interface for my father-in-law and child, and easy-to-debug (Lichess uses websockets which are often blocked by state firewalls).
If you don't have to deal with an amorphous state actor and a very different Internet culture, then please use Lichess. :)
In the context of chess I would imagine passing JSON around via EventSource/SSE should be more than enough.
For now, yes we are communicating moves in exactly the way you described EventSource! Eg:
{ "fen": "rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1", "status": "active", "turn": "b", "white_ready": true, "black_ready": true, "spectators": 1, "in_check": false, "last_move": "e2e4", "game_over": false, "available_colors": [], "reservations": { "white": {"reserved": true, "expires_in": 0}, "black": {"reserved": true, "expires_in": 0} } }
Your sudoku (https://raunak.io/sudoku) kicksass!