63 lines
2.2 KiB
Markdown
63 lines
2.2 KiB
Markdown
# Pick'n'Play
|
|
|
|
Pick'n'Play is a .NET 10 ASP.NET Core Minimal API app with a static HTML/CSS/JS frontend and SQLite persistence.
|
|
|
|
## Quick Start
|
|
|
|
1. Restore and build:
|
|
`dotnet build GameList.sln`
|
|
2. Apply DB migrations explicitly:
|
|
`dotnet ef database update`
|
|
3. Run tests:
|
|
`dotnet test GameList.Tests/GameList.Tests.csproj`
|
|
4. Run locally:
|
|
`dotnet run --project GameList.csproj`
|
|
5. Open:
|
|
`http://localhost:5000` (or the URL shown by `dotnet run`)
|
|
|
|
## Frontend Tooling
|
|
|
|
- Install tooling: `npm install`
|
|
- Lint JS: `npm run lint`
|
|
- Check formatting: `npm run format:check`
|
|
- Apply formatting: `npm run format`
|
|
|
|
## Core Behavior
|
|
|
|
- Authentication: username/password with HttpOnly `player` cookie.
|
|
- Admin authorization: authenticated account with `IsAdmin=true`.
|
|
- Owner model: first valid admin-key registration becomes `owner`; admins can grant/revoke admin role for non-owner accounts.
|
|
- Core invariants are DB-enforced: single owner account and non-joker suggestion cap.
|
|
- Gameplay phases: `Suggest`, `Vote`, `Results`.
|
|
- Storage: SQLite database under `App_Data/gamelist.db`.
|
|
- Migrations are deployment-time operations (`dotnet ef database update`); app startup does not auto-migrate.
|
|
- Security defaults: rate-limited auth/admin routes, baseline browser security headers, production HTTPS+HSTS enforcement.
|
|
|
|
## Module Ownership
|
|
|
|
- `Program.cs`: startup wiring, middleware order, route registration.
|
|
- `Endpoints/`: endpoint adapters plus application workflow services (`ServiceResult<T>` outputs mapped to HTTP at the edge).
|
|
- `Infrastructure/`: filters, middleware, identity helpers.
|
|
- `Data/`: EF Core `DbContext` and migrations.
|
|
- `Domain/`: entities and enums.
|
|
- `Contracts/`: request/response DTOs.
|
|
- `wwwroot/`: static frontend assets.
|
|
- `GameList.Tests/`: integration and helper tests.
|
|
- `scripts/`: deployment scripts.
|
|
|
|
## Operations
|
|
|
|
- API surface and endpoint contract: `API.md`
|
|
- Product/feature expectations: `SPEC.md`
|
|
- IIS deployment notes: `IIS.md`
|
|
- Test strategy details: `TESTS.md`
|
|
|
|
## CI
|
|
|
|
GitHub Actions workflow: `.github/workflows/ci.yml`
|
|
|
|
- Restores dependencies
|
|
- Runs frontend lint and format checks
|
|
- Builds with warnings treated as errors
|
|
- Runs `GameList.Tests`
|