26379eef1a0b3893875bb6737c9ea8336063f8b2
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
- Restore and build:
dotnet build GameList.sln - Apply DB migrations explicitly:
dotnet ef database update - Run tests:
dotnet test GameList.Tests/GameList.Tests.csproj - Run locally:
dotnet run --project GameList.csproj - Open:
http://localhost:5000(or the URL shown bydotnet 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
playercookie. - 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 CoreDbContextand migrations.Domain/: entities and enums.Contracts/: request/response DTOs.wwwroot/: static frontend assets.GameList.Tests/: integration and helper tests.scripts/: deployment scripts (scripts/deploy-ftp.ps1,scripts/deploy-ftp1.ps1).deploy.ps1: local shortcut wrapper that runs FTP deploy usingscripts/deploy-ftp.profile.psd1. Deploy sets frontend<meta name="app-base">automatically from deploy profileBasePath(or inferred fromRemoteDir).
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.Testswith coverage collection - Enforces minimum coverage thresholds (line 90%, branch 70%)
Description
Languages
C#
64%
JavaScript
25.5%
CSS
4.4%
PowerShell
3.8%
HTML
2.3%