# Koinon Games: Synchronous tabletop games for groups, cells and friends

Side project · Beta · Jordão Qualho, Senior Software Engineer

> A mobile-first PWA that turns card and social-deduction games into shared rooms anyone can join from a phone. Tested with 50+ people across 100+ games.

Technologies: React, Vite, TypeScript, Node.js, Fastify, Socket.IO, Tailwind CSS, PWA

Live: https://koinongames.vercel.app/

## Overview

Koinon Games is a digital tabletop platform for groups that want to play together without carrying a deck of cards or remembering to bring a game. The name comes from koinon, communion: the product is about making a shared activity easy to start. Anyone with a phone can join a room through a QR code or room ID and play over the internet. The initial audience was churches and friend groups, but the product is designed for any group. The first games are O Judas, where disciples identify the traitor through secret words, and Os Fofoqueiros, where believers protect secrets while saboteurs try to disrupt missions.

## What it does

- O Judas: a social-deduction game in which disciples use secret words to identify the traitor.
- Os Fofoqueiros: a trust-and-betrayal game in which believers protect secrets and gossipers sabotage missions.
- Rooms that can be joined from the home screen with a QR code or room ID.
- Synchronous rooms with real-time player and game-state updates.
- Mobile-first PWA interface designed for use during an in-person gathering.
- Christian and non-Christian themes, depending on the group's preference.
- Shared TypeScript types for players, rooms, themes and Socket.IO events.

## Why I built it

The product removes the friction of bringing a physical game: if everyone has a phone and internet access, the group can start playing anywhere.

The original audience was churches and friend groups, but the underlying format is useful for any group that wants a shared game without a moderator carrying all the materials.

The product direction, game design and decisions about the experience were mine; coding agents accelerated the implementation inside a private monorepo.

> **More than a prototype on paper.** More than 50 people have already played across 100+ games. The product is still in beta, but the core loop—join a room, synchronize a group and play on phones—has been tested in real gatherings.

## How it's built

- The web app uses React, Vite and TypeScript, with Tailwind CSS for styling and PWA support for offline-capable experiences.
- The backend uses Node.js, Fastify and Socket.IO for HTTP endpoints and real-time game communication.
- A pnpm-workspaces monorepo keeps the web app, server and packages/shared together.
- The shared package defines the contracts used by both sides, including Player, Room, Theme and GameEventMap.
- Rooms live in server memory and expire after enough inactivity, avoiding accounts and persistence while keeping active games simple.
- Validation protects against repeated or out-of-order events, while a reconnection tolerance gives disconnected players time to return.
- The hardest engineering work was handling different connection conditions and keeping controls usable across different phone sizes.
- The frontend is deployed to Vercel and the backend runs on Railway, with CORS, environment secrets and production configuration kept in the respective platforms.
- There is no monitoring or health-check layer yet because the beta is still small; the current priority is fixing edge cases found in playtests.

## Deliberate limits

- The repository is private.
- The product is in beta and still receives fixes as new gaps are found, especially around connectivity and responsive controls.
- The first release focuses on O Judas and Os Fofoqueiros; the game catalog can grow later.
- The platform is designed for synchronous groups rather than asynchronous matchmaking.
- Rooms are held in server memory and there are no accounts or persistent player profiles; only a chosen name and local preferences remain on the device.

---

Canonical: https://jordaoqualho.com/projects/koinon-games/ · Full profile: https://jordaoqualho.com/llms-full.txt · Contact: jordaoqualho@gmail.com
