Digital implementation of Time Bomb (with Evolution rules support) built with:
- Backend: ASP.NET Core + SignalR
- Frontend: React + Vite + TypeScript
- Orchestration: .NET Aspire AppHost
The project provides a multiplayer social-deduction game flow with a real-time lobby and in-game state updates.
TimeBomb.AppHost/- Aspire orchestrator (starts backend + frontend together)TimeBomb.Server/- ASP.NET Core API + SignalR hub + game domain logicfrontend/- React/Vite client appTimeBomb.Server.Tests/- xUnit test project for backend behaviordocs/- rules and QA runbook documentation
- .NET SDK 10+
- Node.js 20+
- npm
- Aspire CLI (
aspire --version)
From the repository root:
aspire runThe Aspire dashboard and resource endpoints are printed in the terminal.
To stop:
aspire stopaspire run --detach --isolatedRelaunching with the same command is safe if AppHost configuration changes.
From repository root:
dotnet build TimeBomb.sln
dotnet test TimeBomb.Server.TestsFrontend commands (from frontend/):
npm install
npm run dev
npm run build
npm run lint- Controllers are hosted by
TimeBomb.Server - SignalR hub endpoint:
/hubs/game
When running via AppHost, frontend and backend are wired automatically through Aspire service references.
- Rules reference:
docs/rules.md - QA + smoke workflow:
docs/qa-runbook.md - Frontend in-app rules content:
frontend/public/rules/standard-game-rules.mdfrontend/public/rules/evolution-game-rules.md
- The backend serves static files (
wwwroot) for published builds. - In development, the AppHost uses Vite app hosting for the frontend resource.