Go to file
Halit Aksoy 85e3fb60f6 feat(backend): add game history API and live game previews
- GET /games/me/active and /games/me (Bearer token), /games/popular (live
  games, or the most spectated finished ones), and /game/:id now also
  returns saved records of finished games
- Lists are cached in Valkey for 10 seconds, cleared when a game is saved,
  and empty instead of failing while the database is down
- Live game previews over WebSocket: subscribers get the top 5 on
  subscribe and on change, at most once per second, without counting as
  spectators; ids are public ids
- RTMT supports several connection listeners
2026-10-16 00:21:09 +03:00
apps feat(backend): add game history API and live game previews 2026-10-16 00:21:09 +03:00
config feat(keycloak): add Keycloak with guest login extension 2026-10-14 01:46:48 +03:00
docs/specs/game-history feat(backend): add game history API and live game previews 2026-10-16 00:21:09 +03:00
packages feat(backend): save every game and keep live games across restarts 2026-10-16 00:18:33 +03:00
.dockerignore build: use local mancala.js and @mancala/core packages 2026-10-14 02:09:05 +03:00
package.json build: use local mancala.js and @mancala/core packages 2026-10-14 02:09:05 +03:00
README.md build: add shared Postgres and Valkey to compose 2026-10-16 00:05:21 +03:00
TODO.md docs: add TODO with mobile login and open issues 2026-10-14 09:13:52 +03:00

Mancala

Mancala is an open source application for playing mancala game online.

Development

The apps use the local packages/mancala.js and packages/core through link: dependencies, so build those first:

yarn build:packages        # from the repo root

After changing a package, rebuild it (or run yarn dev in it to rebuild on change); the apps pick up the new dist.

Postgres (games and Keycloak), Valkey (live games and caches) and Keycloak run with Docker Compose. Create apps/.env once, then start them:

cd apps
cat > .env <<EOF
POSTGRES_PASSWORD=postgres
KEYCLOAK_DB_PASSWORD=keycloak
KEYCLOAK_ADMIN_PASSWORD=admin
MANCALA_DB_PASSWORD=mancala
EOF
docker compose up -d --build postgres valkey keycloak

Postgres is on localhost:5433 and Valkey on localhost:6379; the backend's defaults point there. Then run yarn dev in apps/backend (port 5005) and in apps/frontend (port 1234).

Docker images for the backend and frontend are built from the repo root:

docker build -f apps/backend/Dockerfile -t jhalitaksoy/mancala-backend .
docker build -f apps/frontend/Dockerfile -t jhalitaksoy/mancala-frontend .