fb70c18e75041d606f2e88a8ab3c3ade54e8f40b
RpgRoller
Fresh full-stack starter scaffold:
RpgRoller/: ASP.NET Core backend + static frontend output (wwwroot)RpgRoller/frontend/: TypeScript frontend sourceRpgRoller.Tests/: xUnit integration-heavy test projectRpgRoller.sln: solution used by local CI script
Prerequisites
- .NET SDK 10.0+
- Node.js 22+ and npm
- PowerShell 7+
Local Development
- Run the local CI parity script:
pwsh ./scripts/ci-local.ps1 - Start the backend:
dotnet run --project RpgRoller/RpgRoller.csproj - Open
http://localhost:5000(or the port shown in the console).
Frontend Tooling
- OpenAPI contract:
openapi/RpgRoller.json - TypeScript build output config:
tsconfig.frontend.json - API client generation + frontend compile:
npm run generate:api-client - Frontend lint checks:
npm run lint - Frontend format checks:
npm run format:check
Test and Coverage
- Tests:
dotnet test RpgRoller.Tests/RpgRoller.Tests.csproj --collect:"XPlat Code Coverage" --settings RpgRoller.Tests/coverlet.runsettings - Coverage gate:
pwsh ./scripts/check-coverage.ps1 -MinLineRate 0.90 -MinBranchRate 0.70
Implemented Backend Scope
- Auth: register, login, logout, current user context
- Session cookie:
HttpOnly,SameSite=Strict,Securewhen served over HTTPS - Rulesets: d6 and dnd5e validation rules
- Campaigns: create/list/read
- Characters: create/update/activate/current-campaign list
- Skills: create/update with ruleset-aware dice expression validation
- Rolls: public/private skill rolls with append-only campaign log
- State stream: SSE endpoint for campaign version updates
Implemented Frontend Scope
- TypeScript-driven UI for:
- registration, login, logout
- campaign creation and selection
- character creation and activation
- skill creation and editing
- public/private rolling and campaign log viewing
- SSE-backed live refresh for selected campaign state/log
Description
Languages
C#
76.8%
HTML
9.2%
JavaScript
8%
CSS
4%
PowerShell
1.5%
Other
0.5%