Records for the JSON the clients read, leaving out only the fields TypeScript leaves undefined. GameLoop is the single thread that owns live state; ManualScheduler replaces Jest's fake timers in tests. Keycloak tokens are verified with jose4j and the same checks as before.
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).
|
|
- [x] 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`.
|