# CoopGameChooser Task List - [x] Initialize git repository. ## Foundation - [x] Add `.gitignore` for .NET / IIS publish artifacts. - [x] Scaffold .NET 10 minimal API project with static file hosting (`wwwroot`). - [x] Configure SQLite connection pointing to `App_Data` with EF Core migrations folder under `Data/`. - [x] Define domain models in `Domain/`: `Player`, `Suggestion`, `Vote`, `AppState`, `Phase` enum. - [x] Implement `AppDbContext` in `Data/` with DbSets and simple seeding of `AppState`. ## Identity & Middleware - [x] Middleware to issue/read HttpOnly `player` cookie with Guid; SameSite=Strict; secure in production. - [x] Minimal API helpers to resolve current player and ensure existence in DB. - [x] Global exception handling and basic logging. ## Phase Enforcement - [x] Store current phase in `AppState`; default to Suggest. - [x] Central guard ensuring endpoints respect allowed phase (server-side blindness, no client trust). ## API Endpoints (see API.md) - [x] `GET /api/state` returns phase and counts. - [x] `GET /api/me` and `POST /api/me/name` to set display name. - [x] Suggestion endpoints: mine/create/all with per-player visibility rules. - [x] Vote endpoints: mine/create with per-player visibility and phase gating. - [x] Results endpoint aggregates totals and vote counts (optionally averages) sorted desc. - [x] Admin endpoints: switch phase, reset data; protect via env password. ## Frontend (wwwroot) - [x] `index.html` shell with phase-driven sections. - [x] `app.js` API client, polling, and render functions per phase; enforce blindness in UI. - [x] `styles.css` basic responsive layout (desktop + mobile). ## Persistence & Migrations - [x] Create initial EF Core migration for SQLite schema. - [x] Add startup migration application. ## Testing & Quality - [x] Happy-path smoke test script (manual or minimal automated) for phase flow. - [ ] Lint/format via `dotnet format` (optional) and ensure build succeeds. ## Deployment - [ ] Add minimal publish profile/notes for IIS (respect `ASPNETCORE_ENVIRONMENT`, admin password env var, writable App_Data). ## Stretch (later) - [ ] Support multiple sessions/rooms. - [ ] Add rate limiting or spam safeguards.