Files
RpgRoller/README.md

2.0 KiB

RpgRoller

Fresh full-stack starter scaffold:

  • RpgRoller/: ASP.NET Core backend + static frontend output (wwwroot)
  • RpgRoller/frontend/: TypeScript frontend source
  • RpgRoller.Tests/: xUnit integration-heavy test project
  • RpgRoller.sln: solution used by local CI script

Prerequisites

  • .NET SDK 10.0+
  • Node.js 22+ and npm
  • PowerShell 7+

Local Development

  1. Run the local CI parity script:
    pwsh ./scripts/ci-local.ps1
    
  2. Start the backend:
    dotnet run --project RpgRoller/RpgRoller.csproj
    
  3. 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, Secure when 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