Add Gear/landing link to /jersey-public #245

Closed
opened 2026-04-10 21:53:37 +00:00 by forgejo_admin · 1 comment
Contributor

Type

Feature

Lineage

Depends on westside-landing#243 (jersey-public route). Part of System B production rollout. Architecture in arch-jersey-intake.

Repo

forgejo_admin/westside-landing

User Story

As a player visiting the westside-landing Gear page
I want a discoverable "Order Your Jersey" link
So that I can start a jersey order without Marcus having to DM me the URL

Context

Marcus shares /jersey-public via text/GroupMe most of the time, but players who browse the site should also be able to find it naturally. This ticket adds the discovery path from the Gear page.

Because /jersey-public lives under (app)/ and is NOT on PUBLIC_APP_ROUTES, unauthenticated clicks on the CTA will automatically bounce through /signin via the existing (app)/+layout.svelte guard. That's the intended UX: click → sign in → arrive on jersey form with name/email prefilled. No extra routing logic needed here.

File Targets

Files to modify:

  • src/routes/(public)/gear/+page.svelte — add a prominent "Order Your Jersey" CTA linking to /jersey-public
  • src/routes/(public)/+page.svelte (landing) — add a smaller secondary CTA in a natural section, OR explicitly document in the PR why no landing CTA was added

Files the agent should NOT touch:

  • src/routes/(app)/jersey-public/* — T1, hands off
  • Nav / layout files
  • Other marketing content

Acceptance Criteria

  • Gear page shows a prominent "Order Your Jersey" button/card linking to /jersey-public
  • CTA reuses existing styles — no new visual invention
  • Landing page either has a secondary CTA or the PR explains why it was omitted
  • Links are plain <a href="/jersey-public"> — no JS interception
  • Mobile tap target ≥ 44px
  • Clicking the CTA as an unauthenticated user bounces through /signin (via existing layout guard) — verify manually in dev

Test Expectations

  • Component test: Gear page renders the CTA with correct href
  • Run command: westside-landing test runner

Constraints

  • Match existing visual language
  • No Tailwind
  • No analytics wiring
  • Do NOT modify Gear page's existing content — just add the CTA
  • No auth-related code here — the existing (app) layout guard handles the bounce

Checklist

  • PR opened against westside-landing main
  • Depends on #243 merged first (otherwise the link 404s)
  • Tests pass
  • No unrelated changes
  • westside-basketball — project
  • story:WS-S31 — admin public jersey intake link
  • arch-jersey-intake — architecture doc
  • Depends on: westside-landing#243
### Type Feature ### Lineage Depends on `westside-landing#243` (jersey-public route). Part of System B production rollout. Architecture in `arch-jersey-intake`. ### Repo `forgejo_admin/westside-landing` ### User Story As a player visiting the westside-landing Gear page I want a discoverable "Order Your Jersey" link So that I can start a jersey order without Marcus having to DM me the URL ### Context Marcus shares `/jersey-public` via text/GroupMe most of the time, but players who browse the site should also be able to find it naturally. This ticket adds the discovery path from the Gear page. Because `/jersey-public` lives under `(app)/` and is NOT on `PUBLIC_APP_ROUTES`, unauthenticated clicks on the CTA will automatically bounce through `/signin` via the existing `(app)/+layout.svelte` guard. That's the intended UX: click → sign in → arrive on jersey form with name/email prefilled. No extra routing logic needed here. ### File Targets Files to modify: - `src/routes/(public)/gear/+page.svelte` — add a prominent "Order Your Jersey" CTA linking to `/jersey-public` - `src/routes/(public)/+page.svelte` (landing) — add a smaller secondary CTA in a natural section, OR explicitly document in the PR why no landing CTA was added Files the agent should NOT touch: - `src/routes/(app)/jersey-public/*` — T1, hands off - Nav / layout files - Other marketing content ### Acceptance Criteria - [ ] Gear page shows a prominent "Order Your Jersey" button/card linking to `/jersey-public` - [ ] CTA reuses existing styles — no new visual invention - [ ] Landing page either has a secondary CTA or the PR explains why it was omitted - [ ] Links are plain `<a href="/jersey-public">` — no JS interception - [ ] Mobile tap target ≥ 44px - [ ] Clicking the CTA as an unauthenticated user bounces through `/signin` (via existing layout guard) — verify manually in dev ### Test Expectations - [ ] Component test: Gear page renders the CTA with correct href - [ ] Run command: westside-landing test runner ### Constraints - Match existing visual language - No Tailwind - No analytics wiring - Do NOT modify Gear page's existing content — just add the CTA - No auth-related code here — the existing `(app)` layout guard handles the bounce ### Checklist - [ ] PR opened against `westside-landing` main - [ ] Depends on #243 merged first (otherwise the link 404s) - [ ] Tests pass - [ ] No unrelated changes ### Related - `westside-basketball` — project - `story:WS-S31` — admin public jersey intake link - `arch-jersey-intake` — architecture doc - Depends on: `westside-landing#243`
Author
Contributor

Scope Review: APPROVED

Review note: review-952-2026-04-10

Trivial CTA addition from (public)/gear/+page.svelte (and optionally (public)/+page.svelte) to /jersey-public. All verifications pass:

  • Template complete (Type, Lineage, Repo, Story, Context, File Targets, AC, Tests, Constraints, Checklist, Related)
  • Traceability triangle verified: story:WS-S31 found in project-westside-basketball user-stories; arch-jersey-intake note exists
  • Both file targets verified via Forgejo API on main
  • (app)/+layout.svelte guard inspected: PUBLIC_APP_ROUTES does NOT include /jersey-public, so unauthenticated bounce through /signin is confirmed — no extra routing logic needed, as the ticket claims
  • Hard dependency on #243 correctly documented in Lineage, Context, and Checklist
  • Well under the 5-minute rule — 1 required file, 1 optional file, 6 testable AC, plain <a> tag, no logic

Optional polish: add a blocked-by:westside-landing#243 board label for kanban visibility. Not a blocker.

Ready to move backlog → todo.

## Scope Review: APPROVED Review note: `review-952-2026-04-10` Trivial CTA addition from `(public)/gear/+page.svelte` (and optionally `(public)/+page.svelte`) to `/jersey-public`. All verifications pass: - Template complete (Type, Lineage, Repo, Story, Context, File Targets, AC, Tests, Constraints, Checklist, Related) - Traceability triangle verified: `story:WS-S31` found in `project-westside-basketball` user-stories; `arch-jersey-intake` note exists - Both file targets verified via Forgejo API on main - `(app)/+layout.svelte` guard inspected: `PUBLIC_APP_ROUTES` does NOT include `/jersey-public`, so unauthenticated bounce through `/signin` is confirmed — no extra routing logic needed, as the ticket claims - Hard dependency on #243 correctly documented in Lineage, Context, and Checklist - Well under the 5-minute rule — 1 required file, 1 optional file, 6 testable AC, plain `<a>` tag, no logic Optional polish: add a `blocked-by:westside-landing#243` board label for kanban visibility. Not a blocker. Ready to move backlog → todo.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ldraney/westside-app#245
No description provided.