Go to file
Halit Aksoy 219b50b491 feat(backend): port the game logic to Java
GameManager, matchmaking, the game clock, live game snapshots, saving
finished games and live previews, ported from the Node backend with its
tests. Snapshots keep the Node backend's format; a test restores one the
Node backend wrote. Valkey writes and saves run off the game loop.
2026-10-16 11:23:35 +03:00
apps feat(backend): port the game logic to Java 2026-10-16 11:23:35 +03:00
config feat(keycloak): add Keycloak with guest login extension 2026-10-14 01:46:48 +03:00
docs/specs feat(backend): port the game logic to Java 2026-10-16 11:23:35 +03:00
packages fix(core): empty the first pit when animating a single stone move 2026-10-16 10:49:09 +03:00
.dockerignore build: use local mancala.js and @mancala/core packages 2026-10-14 02:09:05 +03:00
AGENTS.md Merge branch 'feature/keycloak-theme' into develop 2026-10-16 10:38:12 +03:00
CLAUDE.md docs: add AGENTS.md with setup, checks and pitfalls, and CLAUDE.md pointing to it 2026-10-16 00:44:09 +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 publishing mancala.js to the TODO 2026-10-16 10:52:15 +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 .