Визуальная часть доски сделана с использованием SVG.
Signaling через WebSocket или вручную, также возможна игра в одном окне по очереди (hotseat).
История ходов показана с использованием react-window.
react-router используется чтобы дифференцировать тип игры:
hotseat
WebSocket signaling
ручной signaling
На доске показано под контролем каких фигур находится выбранный квадрат, какие квадраты контролируются выбранным квадратом. Какие фигуры делают шах, куда фигура может пойти, квадраты показывающие предыдущий ход. Есть легенда которая объясняет значение символов.
Есть возможность:
сохранить/загрузить игру
отменить ход
развернуть доску
Для решения проблемы с потерянными сообщениями (two generals problem) когда игрок делает действие которое должно быть послано оппоненту, создается interval который посылает сообщение с типом действия и id, interval удаляется только когда acknowledgement message принят с тем же id. Принимающая сторона знает последний принятый id и сравнивает его с только что принятым.
В результате на посылающей стороне: если сообщение потеряно, новое будет послано. На принимающей стороне: из всех сообщений с одинаковым id обработано будет только одно (idempotence).