Admin dashboard

League operations across teams, registrations, sponsors, notifications, and readiness.

Admin actions remain local and review-oriented. Provider sends, account grants, and payment/sponsor billing are not connected.

Teams4
Pending registrations0
Active sponsors2
Admin copilot

Registration review queue

1 pending registration request(s) need human review before access is granted.

Review oldest pending requests and confirm guardian/team scope before approval.

Suggests review order only; it cannot approve, reject, invite, or grant access.

Admin copilot

Readiness summary

Teams without coaches: 2

Teams should have an active coach before launch.

Summarizes existing records only; it does not create records or send providers.

Team management

Tiny Tigers
3U - Tiger Cub - Baseball

Rookie Rockets
3U - Rocket - Soccer

Happy Hawks
5U - Hawk - Scouts

Green Comets
6U - Comet - Swim

Open admin theme console
Email automation and mass SMS

Communication console

2 recipient(s)

2 EMAIL record(s) are ready to queue for Tiny Tigers; no provider send occurs.

SMS length: 132 character(s), 1 segment(s). Email/SMS records stay pending until a provider adapter is connected.

Jordan TaylorRiley Parker
Start-of-season metrics

Roster maker readiness

Spring 2026
Teams4
Players5
Open roster spots35
needs players

3U: 2 team(s), 3 player(s), average roster 1.5

Roster maker should balance headcount before publishing teams.

3U2 teams3 players2/1 max/min
5U1 teams1 players1/1 max/min
6U1 teams1 players1/1 max/min

Automatic team builder preview

Workflow: Preview -> Edit -> Approve -> Publish

Sibling/friend constraints: sibling groups stay together and friend requests are considered before roster balance.

Publish boundary: Preview does not update player.teamId. Admin must edit, approve, and publish before roster assignments change.

Rookie Rockets
2 player(s), skill-balance score 3.5: Mason T., Avery P.

Tiny Tigers
1 player(s), skill-balance score 3: Noah B.

Skill ratings default to 3 until explicit evaluations are imported.

Age is represented by division until player birthdate/age-band metadata is added.

Bracket maker

3U tournament preview

Preview

Final bracket can be generated from 2 team(s).

Final
Rookie Rockets vs Tiny Tigers

Roster maker and bracket maker are metrics-driven previews. They do not publish teams, schedules, seeds, or standings yet.

Drag and drop SVG lineup

Tiny Tigers position board

PMason T.CAvery P.1BDrop2BDropSSDrop3BDropLFDropCFDropRFDrop

Drag a roster chip onto any SVG position. This local board does not publish lineup changes to families.

Roster chips

Unassigned

Every rostered player has a position.

Queued communication records

0 local notification records queued across push, email, and SMS channels.

No provider send occurs without a production adapter and approval workflow.

Registration queue

No registration requests yet.

Visibility and moderation

Media governance

Coach/Admin

Supabase media governance rows are not available yet.

Media reports0
Pending review0
Upload storagenot_configured

Upload storage provider is not configured; media intake remains link-based.

Role-based media visibility: 2 item(s) currently visible to parents.

Media retention policy: Retain approved team media through the active season and archive export window.

Opening Day Album
Tiny Tigers - google photos - approved - 0 report(s)

Photo visibility flags: team yes, org no, private album no.

Takedown request: Opening Day Album - needs_review

How to tie cleats
Tiny Tigers - youtube - approved - 0 report(s)

Photo visibility flags: team yes, org no, private album no.

Takedown request: How to tie cleats - needs_review

Reported or hidden media is excluded from parent-visible dashboards until it is restored by an assigned coach or organization admin.

Sponsor CRUD

Sponsor management

Admin only

Sponsor records, placements, and logo assets are loaded from Supabase.

Public display policy: review_required - Public sponsor display requires active status, HTTPS URL, approved placement, and no child endorsement language.

Schedule sponsor placement: 0; media gallery sponsor placement: 0; email sponsor placement: 0; banner sponsor placement: 0.

Stripe live collection is not connected. Sponsor billing proof stays separate from registration, RSVP, schedule, safety, and child-facing sponsor display.

Sponsor billing proof

Stripe Product/Price, invoice proof, and payment proof are admin-only readiness records. Public sponsor placement does not depend on or reveal payment status.

Community Sports Clinic
Stripe Product/Price: sponsor_league_community_sports_clinic; Invoice proof: draft-invoice-sponsor-league-clinic; Payment proof: awaiting_invoice; $250.00 USD.

Corner Pizza
Stripe Product/Price: sponsor_team_corner_pizza; Invoice proof: draft-invoice-sponsor-tigers-pizza; Payment proof: awaiting_invoice; $75.00 USD.

Sponsor billing stays separate from child-facing display. Stripe keys must stay server-side and preferably use restricted keys.

Community Sports Clinic
league - active - no placement

Corner Pizza
team - active - no placement

Readiness

Teams without coaches: 2

Players without parent contact: 3

Pending parent invites: 2

Touch Target QA: reviewed · 44px minimum.

Offline states: scaffolded · Offline fallback is read-only and does not replay RSVPs, chat posts, provider sends, or private data fetches.

Cache invalidation policy: stale_while_revalidate · Invalidate roster, schedule, chat, media, and notification caches after authenticated writes.

Manual dark toggle: System theme

Accessibility contrast checks: 3 reviewed surface(s).

Privacy filters: 3 active filter(s).

Invite acceptance rate: 25%

Average invite-to-account time: 23 hour(s)

Failed invite count: 1

Parent link completion rate: 50%

RSVP response rate: 20%

Schedule alert open rate: 0%

Weekly active parents: 2

Support requests per team: 4 team(s) tracked

CSV import error rate: 0%

Coach weekly update send rate: 0%

Game Day Calm Mode usage: 2 game(s)

Parent Replay completion rate: 0%

Micro-Coaching streak rate: 0%

Media engagement rate: 100%

Notification opt-out rate: 0%