jersey-public.html — public intake prototype (System B) #57
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Type
Feature
Lineage
Standalone — discovered 2026-04-10 while scoping Marcus's jersey order outreach. Coexists with
jersey.html(System A, token-gated roster flow). This is System B — public intake.Repo
forgejo_admin/westside-playgroundUser Story
As Marcus
I want a long-standing public jersey order link I can share with any player (known or new)
So that they can submit their own sizes, number preferences, and tier without me collecting details manually
Context
Marcus currently collects jersey orders manually (text/GroupMe → spreadsheet). A token-gated flow already exists at
jersey.htmlfor known roster players — but that requires Marcus to generate a per-player link each time. For outreach to players who may not yet be in the roster (or for casual "send this to anyone" sharing), we need a second, public intake page.Key decisions locked during scoping:
jersey.htmlis not touched.$90 Reversibleand$130 Reversible + Shooter Shirt. (The existing prototype's "$130 Jersey + Warmup" is System A's product definition and stays there.)jersey.htmlfor visual consistency. Useshared/style.css. No Tailwind.jersey.html(hardcoded Queens) norgear.html(no K/Q toggle) has an existing pattern to reuse. Implement with vanilla JS: a radio or toggle that swaps the two<img>srcattributes between the Kings and Queens filenames listed under File Targets.File Targets
Files to create:
jersey-public.html— the new public intake page. Mirrors card styles fromjersey.html(reuse.jersey-option,.jersey-option-body,.jersey-form-group, etc.) but replaces token-gated identity with self-identification form fields and adds a K/Q image toggle.Image sources (verified HTTP 200):
https://minio-api.tail5b443a.ts.net/assets/westside/jerseys/kings-home.jpeghttps://minio-api.tail5b443a.ts.net/assets/westside/jerseys/kings-away-new.jpeghttps://minio-api.tail5b443a.ts.net/assets/westside/jerseys/queens-home.jpeghttps://minio-api.tail5b443a.ts.net/assets/westside/jerseys/queens-away-new.jpegFiles the agent should NOT touch:
jersey.html— System A, untouched. Different user story, different flow.checkout.html,checkout-success.html,jersey-success.html— wired to System A.gear.html— separate ticket for landing link.shared/style.css,shared/app.js— extend only if strictly required; reuse existing classes first. If new styles are genuinely needed, scope them to a.jersey-public-*prefix inside a<style>block injersey-public.htmlto avoid cross-page leakage.Acceptance Criteria
jersey-public.htmlon mobile and desktop, I see a hero, two jersey tier cards, and the full intake form$90 Reversibleor$130 Reversible + Shooter Shirt)kings-home.jpegandkings-away-new.jpegsources. When I select Queens, both card images usequeens-home.jpegandqueens-away-new.jpeg. The swap is implemented in vanilla JS — there is no existing K/Q pattern to mirror; this is built from scratch.jersey.htmlis opened, it is byte-identical to its state onmainbefore this ticket (git diff main -- jersey.htmlreturns empty)Test Expectations
jersey-public.htmlin Chrome desktop, verify all fields + both card images rendergit diff main -- jersey.htmlreturns empty (AC-5 check)feedback_playground_first.md)Constraints
jersey.html— do not invent new visual patternsfeedback_no_tailwind.md) — pure CSS viashared/style.css+ optional page-scoped<style>blockChecklist
westside-playgroundmainjersey.html(verified viagit diff main)Related
westside-basketball— project this affectsstory:WS-S31— user story this implements (admin public jersey intake link)arch-generic-checkout— future backend target (out of scope here)feedback_playground_first.md— playground-gate philosophyfeedback_svelte_is_html.md— .svelte files are HTML, promotion is copy-pastearch-jersey-intakenote documenting System A + System B coexistence before any backend/API work lands. Reviewer flagged this as required-before-backend-follow-up but not a gate for this playground ticket.Scope Review: NEEDS_REFINEMENT
Review note:
review-942-2026-04-10Scope is fundamentally sound — template complete, traceability verified (WS-S31 found on project-westside-basketball), file targets checked, MinIO images confirmed live, no blocking dependencies, and the System A/B split is cleanly enforced by the "do not touch" list + byte-identical AC. Two small fixes before dispatch:
gear.htmldoes not contain a Kings/Queens image swap pattern (verified — 138 lines, no K/Q toggle). Drop "(same pattern as gear.html)" and say explicitly that the K/Q image swap is to be built from scratch with vanilla JS, swapping betweenkings-home.jpeg/kings-away-new.jpegandqueens-home.jpeg/queens-away-new.jpegfrom the MinIO jerseys bucket.arch-jersey-intakedocumenting System A (token-gated,jersey.html, existing) + System B (public,jersey-public.html, this ticket) coexistence. Not blocking this playground ticket but required before any backend/API follow-up.No decomposition needed — single-agent pass, ~15–25 min. Playground-gate exit via Lucas's phone/Tailscale is correct.
Reviewed by Dottie.
Scope Re-Review: APPROVED
Review note:
review-942-2026-04-10(verdict section appended at top).Both findings from the first pass are resolved:
kings-home.jpeg,kings-away-new.jpeg,queens-home.jpeg,queens-away-new.jpeg) and states the K/Q swap is built from scratch in vanilla JS. Context section adds a matching "no existing pattern to reuse" decision bullet. File Targets lists the four MinIO URLs.Regression check on AC-5 (byte-identical jersey.html), AC-2 (field enumeration), AC-7 (mobile/Tailscale exit gate), "do not touch" list, no-Tailwind constraint, two-tier spec, and shooter-shirt-size decision — all intact. No drift.
Ticket is ready to advance backlog → todo on
board-westside-basketball.