Phase 1: Player registration form + data model #7
Labels
No labels
domain:backend
domain:devops
domain:frontend
status:approved
status:in-progress
status:needs-fix
status:qa
type:bug
type:devops
type:feature
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
forgejo_admin/basketball-api#7
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 1 (Player registration form + data model)Repo
forgejo_admin/basketball-apiUser Story
As a parent/player
I want to fill out a profile form with my kid's photo, school, and details
So that coaches have a complete roster with faces and names for tryouts on March 13
Context
Tryouts are March 13, 6-8 PM at Kongo Gym, Farmington. 34 players have paid $30 via Stripe but we have NO profile data beyond what Stripe collects (name, height, graduating class, parent contact). Coaches need player profiles to learn names and faces before tryout day.
What already exists:
Decisions made in planning:
File Targets
Files the agent should modify or create:
src/basketball_api/models.py— add new fields to Player modelalembic/versions/— new migration for Player field additionssrc/basketball_api/routes/register.py— new: GET /register (HTML form) + POST /register (save to DB)src/basketball_api/routes/upload.py— new: POST /upload/photo (file upload, returns URL)Files the agent should NOT touch:
src/basketball_api/routes/coach.py— that's Phase 2src/basketball_api/services/email.py— that's Phase 3Acceptance Criteria
GET /registerreturns a mobile-friendly, branded HTML form collecting: player name, photo, height, position, graduating class, DOB, current school, top 3 target schools, hometown, local/travel/both preference, parent name, parent address, parent email, parent phonePOST /registersaves data to Postgres. If player already exists (match by parent email), updates profile instead of creating duplicatePOST /upload/photoaccepts image upload and returns a URLhttps://buy.stripe.com/eVqaEZdsGgpa52i5jI0VO03). If already paid, show confirmation.Test Expectations
pytest tests/ -vConstraints
Checklist
Related
project-westside-basketball— project this affects