Every win, weighted by stage.
Digitise registration, draws, courtside scoring and live leaderboards — with the scoring rules held in a configurable rule engine, not hardcoded.
Clubs on Smashboard
Append-only ledger
Every point is its own immutable row: player, event, stage, reason, value. A leaderboard is a projection, never a stored total.
Rules are data
A scoring profile is a database record. A club that wants 3 points per league win changes a form field — no deployment.
Multi-tenant from line one
Every table carries a club id, isolated by row-level security in Postgres — not application code remembering to filter.