Build Your Perfect League Format
Independent settings for match structure, registration, entry mode, and partner commitment. Pick a preset or go fully custom.
Four presets, one click
Most leagues fit one of four patterns. Select a preset and every setting is configured automatically. No forms, no guesswork.
Classic Round Robin
Season registration, fixed doubles partners, round robin scheduling. The traditional league format most clubs run today.
Social Mixer
Season registration, individual entry, rotating partners each week. Great for community building and meeting new players.
Drop-In Series
Per-week registration with a session fee. Show up when you can, pay only for the sessions you attend. Cumulative standings across weeks.
Ladder
Season registration, individual entry. Challenge-based play with rung promotions and challenge windows.
Custom mode. None of the presets fit? Select "Custom" and configure each setting independently. Combine per-week registration with fixed doubles partners, or season registration with individual entry and rotating partners. Any combination works.
Independent settings
Each aspect of a league is its own setting. Change one without affecting the others.
| Setting | Options | What it controls |
|---|---|---|
| Match Structure | Round Robin, Ladder | How matches are scheduled and brackets formed |
| Registration Mode | Season, Per Week, Player Chooses | How players sign up and when they pay |
| Entry Mode | Individual, Doubles | Whether players register alone or as a pair |
| Partner Commitment | Fixed, Rotating | Whether doubles partners stay together or change each week |
Round Robin + Per Week + Individual + Rotating — casual drop-in with new partners every session
Round Robin + Season + Doubles + Fixed — traditional competitive doubles league
Round Robin + Player Chooses + Individual + Rotating — flexible league where players pick their commitment level
Ladder + Season + Individual — challenge-based competition with a fixed roster
Per-week fee proration
Leagues with per-week or player-chooses registration automatically prorate platform fees. Players who attend 4 out of 10 weeks pay 40% of the platform fee, not the full amount.
Automatic calculation
Platform fees are prorated per session based on the total number of weeks in the season. No manual configuration needed.
Per-session line items
Each session payment generates its own invoice line item with the prorated platform fee, making reconciliation straightforward.
Always-available standings
Every composable league gets multiple standings views. Players can toggle between them at any time.
Per-night standings — results from a single session or week
Cumulative standings — running totals across all played weeks in the season
All-time standings — career stats within this league across multiple seasons
Cross-division leaderboard — see how you rank against all divisions, not just your own
Scoring mode is automatic. Season-based leagues use win-loss records. Per-week and player-chooses leagues use cumulative points, which normalize for variable attendance.
Fully backward compatible
Existing leagues are completely unchanged. No data migration, no behavior changes, no risk. Composable settings only apply to leagues created through the new flow.
Zero risk
Legacy leagues continue using their existing league_type enum. All scheduling, standings, and registration paths remain untouched.
Separate code paths
A composable_settings? guard ensures new logic only runs for new leagues. Existing code paths are never modified.
Frequently asked questions
No. Presets are a convenience. Select "Custom" and you can configure every setting independently.
Not currently. Existing leagues keep their original configuration. Create a new league with composable settings for your next season.
The league is saved as "Custom" with whatever settings you configured. The preset is just a starting point.
No. Platform fees are prorated proportionally. A player attending every week pays the same total as a full-season registration.
Yes. Use the "Player Chooses" registration mode. Each player decides whether to commit for the full season or pay per week.