Port playground prototypes to SvelteKit (Phase 10f-4) #30
Labels
No labels
domain:backend
domain:devops
domain:frontend
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
forgejo_admin/westside-landing#30
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?
Lineage
plan-2026-03-08-tryout-prep→ Phase 10f → Phase 10f-4Repo
forgejo_admin/westside-appUser Story
As Marcus (admin), a coach, or a parent
I want dashboard pages that reflect post-tryout operations (payments, team info, parent contact)
So that the app serves its actual current purpose instead of showing obsolete tryout-day UI
Context
Tryouts are over. The current SvelteKit pages still show tryout-day triage UI (check-in, tryout number assignment, waiver buckets). The
westside-playgroundrepo (~/westside-playground/) has working HTML/CSS prototypes for post-tryout dashboards that look correct on mobile. SvelteKit.sveltefiles are just HTML — we port the playground markup directly and swap hardcoded fake data for{data.xxx}template bindings.The playground's
shared/app.css(589 lines) is a complete design system with components:.stat-card,.player-card,.badge-*,.list-row,.info-card,.bottom-nav,.team-card,.schedule-item, etc.Key decisions:
src/app.cssentirely with playground'sshared/app.cssAuthStatus.sveltenav component stays as-is (it already works with role-based nav)+page.svelteat root) stays as-is (PR #29)payment_statusfieldfetchTeams()fromsrc/lib/server/api.jsFile Targets
Files to modify:
src/app.css— REPLACE entirely with~/westside-playground/shared/app.csscontentsrc/app.html— Update inline critical styles if any CSS custom property names changed (check--color-bg,--color-textstill match)src/routes/player/+page.svelte— Port from~/westside-playground/parent.html: info-card layout with player profile, team info, payment status, schedulesrc/routes/player/+page.server.js— May need to also callfetchMyTeam()orfetchTeams()to get team name/coach for the player cardsrc/routes/coach/+page.svelte— Port from~/westside-playground/coach.html: player card grid with parent contact info (parent_name,parent_phone) and payment badgessrc/routes/coach/+page.server.js— Likely unchanged (already fetches roster with parent data)src/routes/admin/+page.svelte— Port from~/westside-playground/admin.html: stats row, payment health bar, overdue families list, teams summary, quick action buttonssrc/routes/admin/+page.server.js— AddfetchTeams()call, derive payment stats from rosterFiles NOT to touch:
src/routes/+page.svelte— Landing page (PR #29, working)src/routes/+page.server.js— Role redirect (working)src/routes/admin/teams/— Draft board (working)src/routes/admin/users/— User management (working)src/routes/signin/,src/routes/signout/— Auth routessrc/auth.js,src/hooks.server.js— Auth configsrc/lib/components/AuthStatus.svelte— Nav component (working)Acceptance Criteria
/playeras a parent, I see my player's profile card with name, position, school, and team info (not tryout triage)/coachas a coach, I see a player card grid with parent name, phone (clickable tel: link), and payment badge per player/adminas Marcus, I see an operations dashboard with stats (active players, payment status counts), payment health bar, overdue families list, teams summary, and quick action buttons/) is unchangedTest Expectations
npm run buildpasses with zero errorsnpm run checkpasses (Svelte type checking)cd ~/westside-app && npm run build && npm run checkConstraints
~/westside-playground/parent.html,coach.html,admin.html) as the design spec — copy their HTML structure~/westside-playground/shared/app.cssand copy it tosrc/app.css<style>blocks in.sveltefiles minimal — page-specific overrides onlyAuthStatus.sveltecomponent provides the top nav — do NOT add a duplicate nav from playground HTML<nav class="bottom-nav">on each page — include it if it doesn't conflict with AuthStatus navpayment_statusfield returns and map to badge classes (badge-success,badge-danger,badge-warning)src/lib/server/api.js— only add if neededChecklist
npm run buildpassesnpm run checkpassesRelated
project-westside-basketball— project this affectsplan-2026-03-08-tryout-prep— parent plan