| tenants |
Multi-tenant root |
6 cols. v1 hardcoded to id=1 (Westside). |
| parents |
Parent/guardian contact |
11 cols, ~99 rows. Holds waiver fields + magic-link registration_token (sensitive). |
| coaches |
Coaching staff |
16 cols. Stripe Connect onboarding state. |
| players |
Player profile (widest table) |
37 cols, ~58 rows. 6 enum fields, jsonb contract_overrides. |
| teams |
Team roster + config |
10 cols, 7 rows. contract_config jsonb + GroupMe links. |
| player_teams |
Junction table |
2 cols. Many-to-many player↔team. |
| events |
Calendar entries |
13 cols. Self-ref via parent_event_id for recurring events. |
| tournaments |
Tournament definitions |
6 cols. |
| tournament_products |
Tournament↔product↔team junction |
5 cols. |
| practice_schedules |
Recurring practice slots |
12 cols. |
| products |
Stripe products catalog |
10 cols. custom_fields jsonb. |
| orders |
Stripe checkout records |
12 cols, 85 rows. |
| registrations |
Tryout/signup payments |
12 cols, 50 rows. |
| email_log |
Outbound email audit |
8 cols, 609 rows (largest table). |
| interest_leads |
Marketing capture |
8 cols. |
| sponsors |
Sponsor CRM |
13 cols, 44 rows. |
| oauth_tokens |
Third-party API tokens |
7 cols. token_data jsonb is SENSITIVE — hide from UI. |
| password_reset_tokens |
Reset flow tokens |
6 cols. token field SENSITIVE. |
| contract_audit_log |
Contract state diffs |
8 cols. old_state/new_state jsonb. |
| jersey_public_orders |
Public jersey intake |
19 cols. UUID PK (only one). |
| outbox |
Outbox event pattern |
7 cols. |
| alembic_version |
Migration tracking |
1 col. EXCLUDE from admin UI. |