Compose builds two images:

  • retrofrontier/backend:local
  • retrofrontier/frontend:local

The frontend image builds apps/site and apps/play separately, then serves the site at / and the play app at /play/.

/        -> apps/site/dist
/play/   -> apps/play/dist
/ws      -> backend websocket
/health  -> backend health through nginx

The backend image uses Deno 2.8.1 because server runtime code relies on native Temporal. It handles SIGTERM directly so Docker stop/recreate flows shut the server down cleanly.