Architecture: Contracts — Westside Basketball

arch-contracts-westside-basketball Doc

architecture active

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

  • arch-domain-westside-basketball — full domain model
  • arch-deployment-westside-basketball — deployment topology
  • project-westside-basketball — project page