Review: Commerce admin page — Svelte implementation (promoted from playground)
Verdict: APPROVED
Re-review after refinement. All 5 items from the previous review have been addressed. Scope is solid and ready for agent dispatch.
Template Completeness
- [x] Type — Feature
- [x] Lineage — references westside-playground#50
- [x] Repo — forgejo_admin/westside-landing
- [x] User Story — As Marcus (admin), track payment status
- [x] Context — playground origin, implementation contract, upstream gate documented
- [x] File Targets — 2 files, with do-not-touch list
- [x] Acceptance Criteria — 8 criteria covering nav, tabs, data, filtering, mobile
- [x] Test Expectations — manual validation + build check
- [x] Constraints — patterns, CSS, runes, no Tailwind
- [x] Checklist — PR, build, no unrelated changes
- [x] Related — playground issue, SOP, project page
Traceability
- [x] story:WS-S9 — "As an admin, I want to track payment status per player so that I know who owes what"
- [x] story note verified — found in project-westside-basketball user-stories section (stories-admin)
- [x] arch:westside-app label present
- [ ] arch note MISSING — no arch-westside-app note exists in pal-e-docs. Documented as systemic gap, deferred per previous refinement. Not this ticket's scope.
- [x] Forgejo issue — forgejo_admin/westside-landing#226, open
File Targets
- [x]
src/routes/(app)/admin/commerce/+page.svelte— new file. Parent directory does not exist yet (expected for a new route). SvelteKit will create it. - [x]
src/routes/(app)/+layout.sveltelines 106-126 — verified. CRM nav at line 114, Teams nav at line 115. Insertion point between them is correct and accurate. - [x] Do-not-touch list reasonable: CRM page, app.css (with caveat below), backend code
Minor note: Issue says "commerce CSS already exists in shared/style.css" but no
shared/style.css exists. Only src/app.css exists and contains zero commerce CSS classes. This is in the Constraints/NOT-touch guidance — the agent will need to add commerce CSS to app.css. Not a blocker since the agent will naturally handle this, but the statement is factually inaccurate.Repo Placement
OK. Issue filed on westside-landing, work is in westside-landing (westside-app local checkout). Single repo. No cross-repo concerns.
Dependencies
- [x] #865 (playground spec, westside-playground#50) — documented upstream gate. Currently in
needs_approval. Must reachdonebefore this ticket moves toin_progress. Correctly documented in issue body. - [x] basketball-api PR #250 — referenced as already merged (provides commerce fields on /admin/players endpoint). Satisfied.
Acceptance Criteria
8 criteria. All are verifiable by an agent:
- Nav ordering (Dashboard | CRM | Commerce | Teams | Schedule) — checkable via file content
- Three tabs (Jerseys, Subscriptions, Contracts) — verifiable from page source
- Each tab has correct columns, summary counts, and filter buttons — verifiable from source
- apiFetch reuse — verifiable via grep (no new API calls)
- $derived aggregation — verifiable via grep
- Mobile 320px rendering — verifiable via viewport resize + screenshot
All criteria are testable and specific. No ambiguous language. No gaps.
Blast Radius
Low. New page addition + one nav insertion. No modifications to existing pages. The
/admin/players CRM page is explicitly excluded. No downstream consumers affected. Bottom nav gains a 5th item — mobile spacing at 320px is called out in AC. Rollback is straightforward (revert one file + one nav line).Decomposition Assessment
2 file targets, 1 repo, 8 AC. AC count exceeds the 5 threshold, but this is a mechanical playground-to-Svelte promotion with a detailed @-comment spec. The work is: (1) create one new page file with copy-paste + data bindings, (2) add one nav link. Two discrete changes, well under the three-thing limit. Single data source, no new API calls. Fits in one agent pass under 5 minutes. No decomposition needed. No independent subtasks to parallelize.
Recommendation
- [BODY] Non-blocking nit: "commerce CSS already exists in shared/style.css" is inaccurate — no such file exists, and app.css has no commerce classes. Agent will handle naturally by adding CSS to app.css. Consider correcting for accuracy, but not required before dispatch.
Verdict: APPROVED. Scope is clear, file targets verified, traceability complete (arch note gap is systemic/deferred), upstream gate documented. Ready for agent dispatch once #865 reaches done.