mancala/docs/specs/quarkus-backend/tasks.md
Halit Aksoy 6aeff37eb8 feat(backend): replace the Node backend with the Quarkus backend
The Quarkus project moves to apps/backend and the Express sources go.
The image is built from the repo root as before, with Temurin 25, and
runs as a non-root user on port 6000. Compose passes the database as a
JDBC URL with the same MANCALA_DB_PASSWORD.
2026-10-16 11:47:40 +03:00

1.5 KiB

Quarkus backend: tasks

Work through the tasks in order; each ends with its tests passing and a commit. Tick a task when it is committed.

  • 1. Spec: requirements, design and tasks.
  • 2. Project and engine: Maven project in apps/backend-quarkus (Quarkus 3.40, Java 25); the engine port with unit tests; scripts/record-engine-games.js and the parity test (R2).
  • 3. Models, game loop and auth: the wire types and the shared ObjectMapper; GameLoop, Scheduler, ManualScheduler; KeycloakTokenVerifier with unit tests.
  • 4. Game logic: GameStore, MatchMaker, GameClocks, GameSerialization, GameRecorder, GameManager, GameClockScheduler, LiveGames, PublicIds, CrashLog; the in-memory fakes and the ported unit tests.
  • 5. Storage: migrations and their runner, PostgresGameHistoryRepository, GameHistoryService, ValkeyLiveGameStore, ValkeyCache; integration tests with Dev Services.
  • 6. WebSocket and HTTP: RtmtServer with unit tests, RtmtEndpoint, the HTTP resources, Backend wiring and startup, configuration; @QuarkusTests for the API and the WebSocket.
  • 7. Replace the Node backend: move the project to apps/backend, Dockerfile, .dockerignore, compose, remove the Node sources; build the image.
  • 8. End to end and docs: the Chrome tests from design.md against the local stack; README.md, apps/backend/README.md, AGENTS.md, TODO.md.