Quarkus 3.40 on Java 25, built with the Maven wrapper. The engine is a line-by-line port of packages/mancala.js; a parity test replays games recorded with the TypeScript engine, including illegal moves, and compares every board, turn, error and the game JSON.
21 lines
1.5 KiB
Markdown
21 lines
1.5 KiB
Markdown
# 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.
|
|
|
|
- [x] 1. **Spec**: requirements, design and tasks.
|
|
- [x] 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; `@QuarkusTest`s 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`.
|