Show HN: Family Chess: Play across firewalls and Internet cultures
57 points
2 days ago
| 5 comments
| github.com
| HN
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!)

utopiah
2 days ago
[-]
Nice but AFAICT one can self-host lichess https://github.com/lichess-org/lila so I'd imagine based on how active it is, how inclusive it is (including languages like Chinese) I would provide some comparison with it. In terms of long term maintenance I have a hard time, and sorry to be so negative, to imagine it will last longer solely based on the size of the existing community.

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.

reply
kelvinquee
2 days ago
[-]
No, please don't apologise. Thank you for brining up a great point!

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. :)

reply
utopiah
2 days ago
[-]
Out of curiosity what kind of traffic is safe?

In the context of chess I would imagine passing JSON around via EventSource/SSE should be more than enough.

reply
kelvinquee
2 days ago
[-]
I'm not sure. The GFW is rather tricky and is known to do DPI.

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} } }

reply
pepa65
8 hours ago
[-]
It would be nice if you can click on the piece you'd like to move, and then click on the square you'd like to move it too. Currently there seems to be some selecting and then dragging involved..?
reply
rd
2 days ago
[-]
This is awesome! Very smooth. I love when people build things to solve their own problems. Hope your son and grandfather enjoy the games :)
reply
kelvinquee
2 days ago
[-]
Thanks! :) Can't let a firewall come between families.

Your sudoku (https://raunak.io/sudoku) kicksass!

reply
spapas82
2 days ago
[-]
This is very good. One recommendation would be to include a docker image so people can run it easily!
reply
kelvinquee
2 days ago
[-]
Thank you for the suggestion! Will do that for the next release when I include material balance indicator/captured pieces. :)
reply
lspears
2 days ago
[-]
Amazing
reply
kelvinquee
2 days ago
[-]
Thanks! :) I feel like there is a dreadful lack of local-only apps that are runnable on a single simple server, now that everything is overly distributed. Should we bring back more P2P apps?
reply