Remix.run Logo
Show HN: Family Chess: Play across firewalls and Internet cultures(github.com)
44 points by kelvinquee 16 hours ago | 10 comments

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 9 hours ago | parent | next [-]

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.

kelvinquee 9 hours ago | parent [-]

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

utopiah 6 hours ago | parent [-]

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.

kelvinquee 6 hours ago | parent [-]

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

spapas82 7 hours ago | parent | prev | next [-]

This is very good. One recommendation would be to include a docker image so people can run it easily!

kelvinquee 6 hours ago | parent [-]

Thank you for the suggestion! Will do that for the next release when I include material balance indicator/captured pieces. :)

rd 13 hours ago | parent | prev | next [-]

This is awesome! Very smooth. I love when people build things to solve their own problems. Hope your son and grandfather enjoy the games :)

kelvinquee 12 hours ago | parent [-]

Thanks! :) Can't let a firewall come between families.

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

lspears 15 hours ago | parent | prev [-]

Amazing

kelvinquee 14 hours ago | parent [-]

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?