67 lines
2.0 KiB
Markdown
67 lines
2.0 KiB
Markdown
# 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:
|
|
```powershell
|
|
pwsh ./scripts/ci-local.ps1
|
|
```
|
|
2. Start the backend:
|
|
```powershell
|
|
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:
|
|
```powershell
|
|
dotnet test RpgRoller.Tests/RpgRoller.Tests.csproj --collect:"XPlat Code Coverage" --settings RpgRoller.Tests/coverlet.runsettings
|
|
```
|
|
- Coverage gate:
|
|
```powershell
|
|
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
|