Competition Formats
TeeTime supports 10 competition formats covering individual stroke play, points-based formats, and team events.
Individual formats
Stableford
Points-based scoring where higher is better. Most common club competition format.
| Net Score | Points |
|---|---|
| Net Double Bogey or worse | 0 |
| Net Bogey | 1 |
| Net Par | 2 |
| Net Birdie | 3 |
| Net Eagle | 4 |
| Net Albatross+ | 5 |
Use case: Weekly club competitions, social rounds, high-handicap friendly.
Stroke (Medal)
Traditional stroke play where lowest net score wins.
- Gross strokes recorded per hole
- Net score = Gross - Course Handicap
- Lowest total net wins
Use case: Monthly medals, club championships, qualifying rounds.
Par/Bogey
Match play against the course. Each hole is won (+1), lost (-1), or halved (0) against par.
- Calculate net score per hole
- Compare to par: under = +1, over = -1, equal = 0
- Sum all holes for final score
Use case: Alternative to stableford, emphasizes consistency.
Matchplay
Head-to-head hole-by-hole competition.
- Holes won/lost, not total strokes
- Match ends when lead exceeds holes remaining (e.g., "3&2")
- Bracket/knockout progression
Use case: Club championships, knockout competitions, inter-club matches.
Team formats
Four-Ball Better Ball (4BBB)
Two-player teams, each plays their own ball.
- Better net score of the two counts
- Common in pairs competitions
Configuration:
{
isTeamEvent: true,
teamSize: 2,
format: 'FOUR_BALL_BETTER_BALL'
}
Foursomes
Two-player teams, alternate shots.
- Partners alternate shots on each hole
- Alternate tee shots (A tees odd holes, B tees even)
- Single ball per team
Use case: Inter-club matches, Ryder Cup format.
Greensome
Hybrid of four-ball and foursomes.
- Both players tee off
- Select best drive
- Alternate shots from there
Use case: Social team events, mixed competitions.
Scramble
Team format, all play from best position.
- All players hit from each position
- Best shot selected
- Repeat until holed
Use case: Corporate days, charity events, social golf.
Texas Scramble
Scramble with minimum drive requirements.
- Each player's drive must be used minimum number of times
- Typically 3-4 drives per player over 18 holes
- Prevents one player dominating
Configuration:
{
isTeamEvent: true,
teamSize: 4,
format: 'TEXAS_SCRAMBLE',
// minDrivesPerPlayer tracked in local rules
}
Ambrose
Team scramble with combined handicap calculation.
- Scramble format play
- Team handicap = sum of individual handicaps ÷ team size × factor
- Factor varies (commonly 0.1 for 4-person teams)
Use case: Corporate events, mixed-ability teams.
Format comparison
| Format | Players | Scoring | Best For |
|---|---|---|---|
| Stableford | 1 | Points (higher) | Weekly comps |
| Stroke | 1 | Net strokes (lower) | Championships |
| Par/Bogey | 1 | +/- vs par | Consistency focus |
| Matchplay | 1v1 | Holes won | Knockouts |
| 4BBB | 2 | Better ball | Pairs events |
| Foursomes | 2 | Alternate shot | Inter-club |
| Greensome | 2 | Best drive + alternate | Social |
| Scramble | 2-4 | Best shot | Corporate |
| Texas Scramble | 4 | Best shot + min drives | Charity |
| Ambrose | 2-4 | Scramble + team hcp | Mixed ability |
Configuration
Create competition with format
await competitionsService.create({
clubId: 'club-123',
name: 'Club Championship',
format: 'STROKE',
isTeamEvent: false,
isHandicapQualifying: true,
handicapAllowance: 100, // Full handicap
rounds: [
{ roundNumber: 1, date: new Date('2025-03-01'), courseId: 'course-123' },
{ roundNumber: 2, date: new Date('2025-03-02'), courseId: 'course-123' },
],
});
Team event configuration
await competitionsService.create({
clubId: 'club-123',
name: 'Corporate Day',
format: 'TEXAS_SCRAMBLE',
isTeamEvent: true,
teamSize: 4,
isHandicapQualifying: false,
rounds: [{
roundNumber: 1,
date: new Date('2025-06-15'),
courseId: 'course-123',
startType: 'SHOTGUN',
shotgunTime: new Date('2025-06-15T08:00:00'),
}],
});
Format-specific scoring
The ResultsService automatically adjusts sorting based on format:
// Higher is better (Stableford-style)
case 'STABLEFORD':
case 'FOUR_BALL_BETTER_BALL':
case 'FOURSOMES':
case 'GREENSOME':
case 'SCRAMBLE':
case 'TEXAS_SCRAMBLE':
case 'AMBROSE':
return stablefordPoints;
// Lower is better (Stroke-style)
case 'STROKE':
case 'PAR_BOGEY':
return netTotal;
// Separate handling
case 'MATCHPLAY':
// Uses bracket/match results
Handicap allowances
Common allowance percentages by format:
| Format | Typical Allowance |
|---|---|
| Stableford | 95% or 100% |
| Stroke | 95% or 100% |
| 4BBB | 85% or 90% |
| Foursomes | 50% of combined |
| Greensome | 60% low + 40% high |
| Scramble | 10% of combined (4-person) |
Configure via handicapAllowance (0-100):
{
format: 'FOUR_BALL_BETTER_BALL',
handicapAllowance: 85, // 85% of course handicap
}