Project not found.
Architecture: Contracts — Westside Basketball
Architecture: Contracts
Overview
Digital contract signing system for Westside parents. Two repos, one shared database.
Components
| Component | Repo | Role |
|---|---|---|
| westside-contracts | forgejo_admin/westside-contracts | SvelteKit signing app (adapter-node). Renders contract, captures signature, writes to DB + MinIO. |
| basketball-api | forgejo_admin/basketball-api | Data owner. Player/team/parent models, email sending (Gmail SDK), outbox worker for post-sign welcome email. |
| MinIO | cluster service | Signature PNG storage. Key format: westside/signatures/{playerId}_{timestamp}.png |
Data Model
Token Flow
Config Merge Logic
Contract Variants
| Variant | Teams | Content |
|---|---|---|
| boys-travel | 17U Elite Kings, 17U Select Kings, 16U Elite Kings | Power 32 circuit, 3 trips (Seal Beach, Vegas+Championship), recruiting, live periods |
| girls-travel | 17U Elite Queens, 16U Elite Queens | Prep Hoops Girls, 5 events (Utah, Denver, Mesa, Mighty Five, Nike EYBL), roster flexibility, age reassignment |
| local | 17U Local Kings, 16U Local Kings | No travel, tournaments discussed with group, simpler schedule |
Custom Deals (player overrides)
Players with non-standard terms get contract_overrides JSONB. Examples:
- Local-only on travel team: variant override to "local", or tournaments filter to local-only events
- Reduced tournament commitment: tournaments filter (e.g. ["mesa-az", "nike-vegas"])
- Custom practice schedule: practices override replaces team default
- Age/eligibility notes: note field displays as Additional Terms
Email Templates
| Template | When | Placeholders |
|---|---|---|
| action.html | Contract offer (sent to parent) | headline, body, cta_text, cta_url, footer_note |
| (inline HTML) | Post-sign welcome (outbox worker) | parent_name, player_name, team_name, groupme_share_url |
Deploy
Related
arch-domain-westside-basketball— full domain modelarch-deployment-westside-basketball— deployment topologyproject-westside-basketball— project page