Improve public roster page accuracy and player visibility #232

Open
opened 2026-04-07 18:38:30 +00:00 by forgejo_admin · 0 comments
Contributor

Type

Feature

Lineage

Standalone — discovered during email blast prep (2026-04-07). 17 of 52 players had is_public=False despite being on teams with signed contracts. Public roster doesn't reflect the real team accurately.

Repo

forgejo_admin/westside-landing

User Story

As a parent visiting the teams page
I want to see my player listed on the roster
So that I know they're officially on the team and feel connected to the program

Context

The public /teams page only shows players with is_public=True. This flag is manually managed and was out of sync — 17 active team members weren't visible. We bulk-fixed visibility for the current blast, but the underlying issue is that is_public should be derived from team assignment + contract status, not manually toggled.

Current state: roster cards show name, jersey number, position, height, school. Missing: player photos (placeholder divs), graduating class. The page looks incomplete when players haven't filled out their profiles.

File Targets

Files to modify:

  • src/routes/(public)/teams/+page.svelte — roster card layout, empty state handling
  • Consider: auto-set is_public=True when player is assigned to a team (backend change in basketball-api)

Files NOT to touch:

  • src/routes/(public)/schedule/+page.svelte — working correctly
  • src/lib/keycloak.js — auth is a separate ticket (pal-e-services #55)

Acceptance Criteria

  • Players assigned to teams with contract_status=signed are automatically is_public=True
  • Roster cards gracefully handle missing profile data (no empty placeholder boxes)
  • Declined players (contract_status=declined) are never shown on public roster

Test Expectations

  • Visit /teams — all signed, team-assigned players visible
  • Player with incomplete profile doesn't look broken on the roster card
  • Run command: npm run dev and check /teams

Constraints

  • Don't break the existing interest form at the bottom of /teams
  • Public API endpoint /public/teams filters by is_public — any automation should happen at the data layer
  • Coordinate with basketball-api if adding auto-visibility logic

Checklist

  • PR opened
  • Visual check on mobile and desktop
  • No unrelated changes
  • westside — project this affects
  • forgejo_admin/pal-e-services #55 — Keycloak SMTP fix
  • forgejo_admin/basketball-api #379 — declined status enum
### Type Feature ### Lineage Standalone — discovered during email blast prep (2026-04-07). 17 of 52 players had `is_public=False` despite being on teams with signed contracts. Public roster doesn't reflect the real team accurately. ### Repo `forgejo_admin/westside-landing` ### User Story As a parent visiting the teams page I want to see my player listed on the roster So that I know they're officially on the team and feel connected to the program ### Context The public `/teams` page only shows players with `is_public=True`. This flag is manually managed and was out of sync — 17 active team members weren't visible. We bulk-fixed visibility for the current blast, but the underlying issue is that `is_public` should be derived from team assignment + contract status, not manually toggled. Current state: roster cards show name, jersey number, position, height, school. Missing: player photos (placeholder divs), graduating class. The page looks incomplete when players haven't filled out their profiles. ### File Targets Files to modify: - `src/routes/(public)/teams/+page.svelte` — roster card layout, empty state handling - Consider: auto-set `is_public=True` when player is assigned to a team (backend change in basketball-api) Files NOT to touch: - `src/routes/(public)/schedule/+page.svelte` — working correctly - `src/lib/keycloak.js` — auth is a separate ticket (pal-e-services #55) ### Acceptance Criteria - [ ] Players assigned to teams with `contract_status=signed` are automatically `is_public=True` - [ ] Roster cards gracefully handle missing profile data (no empty placeholder boxes) - [ ] Declined players (`contract_status=declined`) are never shown on public roster ### Test Expectations - [ ] Visit /teams — all signed, team-assigned players visible - [ ] Player with incomplete profile doesn't look broken on the roster card - Run command: `npm run dev` and check `/teams` ### Constraints - Don't break the existing interest form at the bottom of /teams - Public API endpoint `/public/teams` filters by `is_public` — any automation should happen at the data layer - Coordinate with basketball-api if adding auto-visibility logic ### Checklist - [ ] PR opened - [ ] Visual check on mobile and desktop - [ ] No unrelated changes ### Related - `westside` — project this affects - `forgejo_admin/pal-e-services #55` — Keycloak SMTP fix - `forgejo_admin/basketball-api #379` — declined status enum
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#232
No description provided.