Replace frontend with Blazor UX implementation

This commit is contained in:
2026-02-25 12:18:28 +01:00
parent a8ee637374
commit 35c60c4ea2
11 changed files with 2324 additions and 50 deletions

View File

@@ -2,11 +2,12 @@
Fresh full-stack starter scaffold:
- `RpgRoller/`: ASP.NET Core backend + static frontend output (`wwwroot`)
- `RpgRoller/`: ASP.NET Core backend + Blazor frontend host (`Components` + `wwwroot`)
- `RpgRoller/frontend/`: TypeScript frontend source
- `RpgRoller.Tests/`: xUnit integration-heavy test project
- `RpgRoller.sln`: solution used by local CI script
- `UX.md`: frontend UX and interaction design specification (pre-implementation baseline)
- `FRONTEND_PROGRESS.md`: implementation tracking (`Implemented` / `Partially implemented` / `Not yet implemented`)
Test layout:
@@ -25,10 +26,11 @@ Backend:
Frontend:
- `RpgRoller/frontend/app.ts`: orchestration entrypoint
- `RpgRoller/frontend/app/`: split modules (`dom`, `state`, `loaders`, `render`, `events`, `actions`)
- `RpgRoller/frontend/generated/`: generated API client source
- `RpgRoller/wwwroot/`: compiled browser assets
- `RpgRoller/Components/`: Blazor root app, routes, layout and page components
- `RpgRoller/Components/Pages/Home.razor(.cs)`: main UX implementation for auth/play/management screens
- `RpgRoller/wwwroot/js/rpgroller-api.js`: browser-side API + SSE + session storage interop for Blazor
- `RpgRoller/wwwroot/styles.css`: responsive UX styling and theme tokens
- `RpgRoller/frontend/generated/`: generated TypeScript API client source retained for contract/tooling parity
Backend state persistence:
@@ -92,10 +94,14 @@ To use a custom SQLite database path, set `ConnectionStrings__RpgRoller`.
## Implemented Frontend Scope
- TypeScript-driven UI for:
- Blazor-driven UI for:
- registration, login, logout
- play screen and campaign management screen switch
- campaign creation and selection
- character creation and activation
- skill creation and editing
- character create/edit/activate via modal forms
- skill create/edit via modal forms
- public/private rolling and campaign log viewing
- SSE-backed live refresh for selected campaign state/log
- responsive play UX:
- desktop two-column (character + log)
- tablet/mobile panel switching with bottom tab bar (`Character` / `Log`)
- SSE-backed live refresh with reconnect status + manual refresh fallback