Games are built with the approck framework. The server side is Rust; game logic and rendering are TypeScript with HTML5 Canvas.
Each game lives under src/web/<game_name>/ and needs:
mod.rs — declares the moduleindex.rs — HTTP route handler that renders the HTML shellindex.ts — TypeScript entry point (imports MCSS, bootstraps the game)index.mcss — all CSS, scoped inside #game-container.mts modules for game logic (state, renderer, entities, etc.)Once implemented, register the game in two places:
src/web/index.rs (alphabetical order in the grid)ALL_GAMES in src/web/index.ts — key must match the URL slugsrc/web/about.rs#id scoped block — no top-level selectorsstyle= attributes — use MCSSapprock pre-commit before submitting