New page: Gear — jersey/merchandise photos from MinIO #94

Closed
opened 2026-03-26 23:50:02 +00:00 by forgejo_admin · 5 comments

Type

Feature

Lineage

Part of public site evolution. Parent note: westside-playground-overhaul

Repo

forgejo_admin/westside-playground

User Story

As a prospective parent, I want to see the team gear/jerseys so I know what my child will be wearing and the program looks professional.

story:WS-S26

Context

Jersey/gear photos exist in MinIO at westside/jerseys/ (3 images: 2574801714458281987.jpeg, IMG_4164.jpeg, IMG_4165.jpeg). This page showcases the merchandise with a clean photo gallery layout.

File Targets

Files to create:

  • gear.html — photo gallery of jerseys/gear. Download images from MinIO CDN or copy to assets/images/gear/. Simple grid layout — let the photos speak.

Files to modify:

  • Nav on ALL pages — add Gear link

Acceptance Criteria

  • gear.html exists with jersey photos displayed
  • Photos load correctly (from assets or MinIO CDN)
  • Nav updated on ALL pages to include Gear
  • Clean gallery layout on mobile

Test Expectations

  • Photos render on 390px
  • All nav links resolve

Constraints

  • Uses shared/style.css
  • Component doc at top
  • Mobile-first — photos should be full-width on phone
  • Simple gallery, no lightbox needed for v1

Checklist

  • Photos downloaded/referenced
  • Page created
  • Nav updated everywhere
  • Lucas phone review
  • westside-playground-overhaul
  • MinIO assets: westside/jerseys/
### Type Feature ### Lineage Part of public site evolution. Parent note: `westside-playground-overhaul` ### Repo `forgejo_admin/westside-playground` ### User Story As a prospective parent, I want to see the team gear/jerseys so I know what my child will be wearing and the program looks professional. story:WS-S26 ### Context Jersey/gear photos exist in MinIO at `westside/jerseys/` (3 images: 2574801714458281987.jpeg, IMG_4164.jpeg, IMG_4165.jpeg). This page showcases the merchandise with a clean photo gallery layout. ### File Targets Files to create: - `gear.html` — photo gallery of jerseys/gear. Download images from MinIO CDN or copy to `assets/images/gear/`. Simple grid layout — let the photos speak. Files to modify: - Nav on ALL pages — add Gear link ### Acceptance Criteria - [ ] `gear.html` exists with jersey photos displayed - [ ] Photos load correctly (from assets or MinIO CDN) - [ ] Nav updated on ALL pages to include Gear - [ ] Clean gallery layout on mobile ### Test Expectations - [ ] Photos render on 390px - [ ] All nav links resolve ### Constraints - Uses `shared/style.css` - Component doc at top - Mobile-first — photos should be full-width on phone - Simple gallery, no lightbox needed for v1 ### Checklist - [ ] Photos downloaded/referenced - [ ] Page created - [ ] Nav updated everywhere - [ ] Lucas phone review ### Related - `westside-playground-overhaul` - MinIO assets: `westside/jerseys/`
Author
Owner

Scope Review: NEEDS_REFINEMENT

Review note: review-409-2026-03-25
Ticket has all required template sections but three issues block agent execution.

  • Repo mismatch: Issue body says forgejo_admin/westside-playground but is filed on westside-app. Re-file on correct repo.
  • Ambiguous image approach: "from assets or MinIO CDN" — agent needs one decision, not two options. CDN pattern exists in authenticated pages already.
  • Nav scope too broad: "Nav on ALL pages" is wrong — only 6 public site-nav pages need updating (index, staff, sponsors, schedule, register, success). The 14 authenticated bottom-nav pages must not be touched.
## Scope Review: NEEDS_REFINEMENT Review note: `review-409-2026-03-25` Ticket has all required template sections but three issues block agent execution. - **Repo mismatch:** Issue body says `forgejo_admin/westside-playground` but is filed on `westside-app`. Re-file on correct repo. - **Ambiguous image approach:** "from assets or MinIO CDN" — agent needs one decision, not two options. CDN pattern exists in authenticated pages already. - **Nav scope too broad:** "Nav on ALL pages" is wrong — only 6 public `site-nav` pages need updating (index, staff, sponsors, schedule, register, success). The 14 authenticated `bottom-nav` pages must not be touched.
Author
Owner

Refinements from review-409-2026-03-25:

  1. Repo convention: Documented.

  2. Image approach — local assets. Copy jersey photos from MinIO to assets/images/gear/ for the playground. Same pattern as coach photos in assets/images/. CDN references are a production concern.

  3. Nav file targets (explicit): Add "Gear" to nav on public pages only (those with .site-nav): index.html, about.html, staff.html, tryouts.html, teams.html, sponsors.html, schedule.html, register.html, success.html. Do NOT touch authenticated pages (they use .bottom-nav).

  4. Independent — no toggle dependency. This page doesn't need Kings/Queens toggle. Can execute in parallel with any other ticket.

**Refinements from review-409-2026-03-25:** 1. **Repo convention:** Documented. 2. **Image approach — local assets.** Copy jersey photos from MinIO to `assets/images/gear/` for the playground. Same pattern as coach photos in `assets/images/`. CDN references are a production concern. 3. **Nav file targets (explicit):** Add "Gear" to nav on public pages only (those with `.site-nav`): `index.html`, `about.html`, `staff.html`, `tryouts.html`, `teams.html`, `sponsors.html`, `schedule.html`, `register.html`, `success.html`. Do NOT touch authenticated pages (they use `.bottom-nav`). 4. **Independent — no toggle dependency.** This page doesn't need Kings/Queens toggle. Can execute in parallel with any other ticket.
Author
Owner

Update: Kings/Queens toggle on Gear page.

Gear page needs the same Kings/Queens toggle — Kings jerseys vs Queens jerseys are different gear. Same initKQToggle() pattern from #92, same localStorage persistence.

This means #94 now depends on #92 (toggle foundation). Updated execution order:

  • #92 lands first (creates toggle)
  • #93, #94, #95 all run in parallel after #92
**Update: Kings/Queens toggle on Gear page.** Gear page needs the same Kings/Queens toggle — Kings jerseys vs Queens jerseys are different gear. Same `initKQToggle()` pattern from #92, same localStorage persistence. This means #94 now **depends on #92** (toggle foundation). Updated execution order: - #92 lands first (creates toggle) - #93, #94, #95 all run in parallel after #92
Author
Owner

Scope Re-Review: NEEDS_REFINEMENT

Review note: review-409-2026-03-25-r2
Two of three original issues resolved; two minor items remain before READY.

Resolved:

  • Repo mismatch — verified intentional convention across all sibling issues (#92, #93, #95)
  • Ambiguous image approach — local assets decided, clear direction

Still needs refinement:

  • about.html listed in nav targets but does not exist — "About" is index.html#about anchor. Remove from list.
  • Kings/Queens toggle requirement (comment #3) not reflected in issue body or acceptance criteria. Agent reads the issue body as spec — toggle scope, initKQToggle() dependency on #92, and AC for toggle+localStorage must be in the body or a consolidated "Final Spec" comment.

Both are minor edits. No structural issues remain.

## Scope Re-Review: NEEDS_REFINEMENT Review note: `review-409-2026-03-25-r2` Two of three original issues resolved; two minor items remain before READY. **Resolved:** - Repo mismatch — verified intentional convention across all sibling issues (#92, #93, #95) - Ambiguous image approach — local assets decided, clear direction **Still needs refinement:** - `about.html` listed in nav targets but does not exist — "About" is `index.html#about` anchor. Remove from list. - Kings/Queens toggle requirement (comment #3) not reflected in issue body or acceptance criteria. Agent reads the issue body as spec — toggle scope, `initKQToggle()` dependency on #92, and AC for toggle+localStorage must be in the body or a consolidated "Final Spec" comment. Both are minor edits. No structural issues remain.
Author
Owner

CONSOLIDATED SPEC (supersedes issue body):

What to build

gear.html — Kings/Queens gear showcase with toggle. Jersey/merch photos in a gallery layout.

Dependencies

Depends on #92 (toggle foundation). Uses initKQToggle() from shared/app.js + .queens-active CSS + localStorage persistence.

File targets

Create:

  • gear.html — Kings/Queens toggle + photo gallery per program
  • assets/images/gear/ — copy jersey photos from MinIO locally

Modify (nav — public .site-nav pages only):

  • index.html, staff.html, sponsors.html, schedule.html, tryouts.html, register.html, success.html
  • Add "Gear" to nav. Do NOT touch authenticated pages (.bottom-nav).
  • Only add nav links to pages that EXIST at merge time. Check what's on main.

Toggle pattern

Same as tryouts.html:

<div class="kq-toggle">
  <button class="kq-toggle-btn active" data-program="kings">Kings</button>
  <button class="kq-toggle-btn" data-program="queens">Queens</button>
</div>
<div data-program-content="kings"><!-- Kings gear photos --></div>
<div data-program-content="queens"><!-- Queens gear photos --></div>

Images

Copy from MinIO westside/jerseys/ to assets/images/gear/:

  • 2574801714458281987.jpeg
  • IMG_4164.jpeg
  • IMG_4165.jpeg

Use for Kings side. Queens gear photos TBD — use placeholder text "Queens gear coming soon."

Acceptance criteria

  • gear.html exists with Kings/Queens toggle
  • Toggle persists via localStorage (same as tryouts/teams/schedule)
  • Jersey photos load from local assets
  • Nav updated on public pages only
  • Mobile gallery layout on 390px
  • Component doc at top (@route, @auth, @nav, @api)
**CONSOLIDATED SPEC (supersedes issue body):** ### What to build `gear.html` — Kings/Queens gear showcase with toggle. Jersey/merch photos in a gallery layout. ### Dependencies Depends on #92 (toggle foundation). Uses `initKQToggle()` from `shared/app.js` + `.queens-active` CSS + localStorage persistence. ### File targets Create: - `gear.html` — Kings/Queens toggle + photo gallery per program - `assets/images/gear/` — copy jersey photos from MinIO locally Modify (nav — public `.site-nav` pages only): - `index.html`, `staff.html`, `sponsors.html`, `schedule.html`, `tryouts.html`, `register.html`, `success.html` - Add "Gear" to nav. Do NOT touch authenticated pages (`.bottom-nav`). - Only add nav links to pages that EXIST at merge time. Check what's on main. ### Toggle pattern Same as tryouts.html: ```html <div class="kq-toggle"> <button class="kq-toggle-btn active" data-program="kings">Kings</button> <button class="kq-toggle-btn" data-program="queens">Queens</button> </div> <div data-program-content="kings"><!-- Kings gear photos --></div> <div data-program-content="queens"><!-- Queens gear photos --></div> ``` ### Images Copy from MinIO `westside/jerseys/` to `assets/images/gear/`: - `2574801714458281987.jpeg` - `IMG_4164.jpeg` - `IMG_4165.jpeg` Use for Kings side. Queens gear photos TBD — use placeholder text "Queens gear coming soon." ### Acceptance criteria - [ ] `gear.html` exists with Kings/Queens toggle - [ ] Toggle persists via localStorage (same as tryouts/teams/schedule) - [ ] Jersey photos load from local assets - [ ] Nav updated on public pages only - [ ] Mobile gallery layout on 390px - [ ] Component doc at top (@route, @auth, @nav, @api)
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
forgejo_admin/westside-app#94
No description provided.