PROTOTYPE Clickable mockup · simulates the finished app ◃ Product overview
Petanque Life Boulodrome · admin
AB

Courts & booking

Court register, booking calendar, opening hours and pricing for the venue. Shared view for boulodrome and club — same court model. Double booking is impossible at the data level (409 court_double_booked).

6
Courts
3
Free now
31
Bookings today
92%
Occupancy tonight
Court register · GET /v1/venues/{id}/courts
No.NameDimensionsSurfaceIndoorLightingHeatingStatus now
1Centre15×4syntheticyesyesyes Free ✎ · 🗑
215×4syntheticyesyesno Booked ✎ · 🗑
315×4gravelyesnono Maintenance ✎ · 🗑
415×4syntheticyesyesno Allocated ✎ · 🗑
515×4syntheticyesyesno Free ✎ · 🗑
615×4gravelyesyesno Free ✎ · 🗑
Booking calendar — per-court timeline · competition allocation blocks slots
Booking Walk-in Recurring Competition allocation Maintenance
Court \ time
08:00
10:00
12:00
14:00
16:00
18:00
20:00
Court 1
18–19 · Anna Lind
Court 2
18–19:30 · Walk-in · Jonas
Court 3
Maintenance — surface repair
Court 4
District Championship Doubles (allocated)
Court 5
19–20 recurring · Nordviks BK
Court 6
New booking — POST …/bookings (all fields)
Auto-calculated fee: SEK 90 (60 member + 30 lighting · booking_fee_minor + amenity_fee_minor)
Opening hours — controls bookable times · opening_hours (JSONB, read as a unit)
DayOpenOpensCloses
Monday + Exception (public holiday / special hours)
Tuesday + Exception (public holiday / special hours)
Wednesday + Exception (public holiday / special hours)
Thursday + Exception (public holiday / special hours)
Friday + Exception (public holiday / special hours)
Saturday + Exception (public holiday / special hours)
Sunday + Exception (public holiday / special hours)
A date override (closed / changed hours / lunch break) always wins over the weekly schedule — the most specific rule applies.
Pricing — court_pricing · amounts as *_minor bigint + currency
Cancellation policy — cancellation_policy (JSONB)
Mutations carry ETag/If-Match — wrong version → 412 stale_version.
Shared screen: boulodrome and club use the same court model — the club typically sees fewer courts and uses recurring series (club training), the hall runs commercial rates with member/guest pricing and walk-ins. QR check-in per booking confirms the slot (check_in_token).