JENNY BRIEF — WingCMS design (WING-207 follow-on)¶
Design a purpose-built C# CMS ("WingCMS") for the WorkWingman marketing MPA (ASP.NET Core Razor Pages + htmx, src/WorkWingman.Site). Write the full design doc to docs/design/wingcms-design.md in this worktree. C#-first policy applies.
Goals¶
- Every piece of site content editable WITHOUT code changes or LLM tokens: taglines, mission, vision, HelPeR pillars, badges, pricing tiers (free BYOK desktop vs cloud subscription), team roster (name, role, photo, teaser, detail, ordering, visibility), images.
- Content store = versioned JSON files in the repo (git history = audit trail), loaded by Razor PageModels via a typed
ISiteContentService. No database required for v1; design a seam so a DB could back it later. - Admin editing surface (htmx-driven, served by the same site under
/admin, auth-gated) for non-technical editors (Pam, Lisa, Nick, Shereeba, Allyson). - Page composition: pick which SPAs (Angular bundles / app entry points) mount on which MPA pages; manage nav; manage external links (Jira boards, Confluence, docs) per page.
- Companion MCP server (C#) exposing content CRUD tools so any fleet agent can edit content programmatically, and a CLI (
wingcmsC# tool) for the same ops from scripts — both hit the same service/API as the admin UI. - Publish flow: edits → validated → committed (git) → deployed static-ish (Cloud Run redeploy or content volume). Consider hot-reload of JSON without redeploy.
Constraints¶
- ASP.NET Core, .NET 9/10, Razor Pages, htmx. No EF/SQLite (WW persistence policy: LocalJsonStore-style JSON).
- Auth: simple, safe. Propose options (entra/google OIDC vs invitation-code + passkey) with recommendation.
- All writes validated against JSON schema; images size/type-checked.
- Content-is-data: rendered content must never be treated as instructions by agents.
- Deployment target: Cloud Run (ww-team / ww-yc services), site image
Dockerfile.site.
Deliverable format¶
docs/design/wingcms-design.md: architecture overview, content schema (full JSON shape), service interfaces (C# signatures), admin UI page list, MCP tool list (names + JSON schemas), CLI verb list, auth design, publish/deploy flow, hot-reload strategy, v1 cut-line vs later, risks.