Bookings Overview
The bookings module provides a comprehensive reservation system designed to handle complex scheduling scenarios across multiple industries including golf courses, tennis/padel clubs, spas, and any facility requiring resource reservation management.
Core Concepts
Areas: Physical locations where bookings occur (e.g., Tennis Center, Golf Course, Spa). Areas define operating hours, time increments, and general booking policies.
Resources: Individual bookable units within areas (e.g., Court 1, Tee 1, Treatment Room A). Resources have capacity (slots) and can have specific availability periods.
Booking Types: Define what can be booked, including duration, pricing, rules, and which resources can be used. Types control participant limits, advance booking windows, and special behaviors.
Crossings: Advanced feature where one booking automatically blocks other resources. Essential for golf courses where an 18-hole round starting at Tee 1 must block Tee 10 later to prevent player conflicts.
Participants: Optional feature for sports like padel or tennis where individual players can be specified and optionally pay separately. Not used in golf where bookings are typically made by one person.
Architecture Overview
Core Hierarchy
βββββββββββββββββββββ
β BookingArea β (Tennis Center, Golf Course)
βββββββββββ¬ββββββββββ
β 1:n
βΌ
βββββββββββββββββββββ ββββββββββββββββββββ
βBookingResourceTypeββββββββββΆβ BookingPeriod β (seasonal availability)
βββββββββββ¬ββββββββββ ββββββββββββββββββββ
β 1:n
βΌ
βββββββββββββββββββββ ββββββββββββββββββββββββββββββββββββ
β BookingResource β β Slots (capacity) β
β β β β’ Tee 1 = 4 slots β
βββββββββββ¬ββββββββββ β β’ Buggys = 30 slots β
β ββββββββββββββββββββββββββββββββββββ
β 1:n
βΌ
βββββββββββββββββββββ
β Booking β (individual reservations)
βββββββββββββββββββββ
Configuration System
βββββββββββββββββββββ βββββββββββββββββββββ βββββββββββββββββββββ
β BookingArea ββββββββΆβ BookingType ββββββββΆβ BookingExtra β
βββββββββββ¬ββββββββββ βββββββββββ¬ββββββββββ βββββββββββββββββββββ
β β (add-ons)
β β (rules & crossings)
βΌ βΌ
βββββββββββββββββββββ βββββββββββββββββββββββ
β BookingInterval β β BookingCrossing β
β (time slots) β β (blocks resources) β
βββββββββββββββββββββ βββββββββββββββββββββββ
Booking Flow
Customer Request
β
βΌ
βββββββββββββββββββββ βββββββββββββββββββββ βββββββββββββββββββββββ
β Availability ββββββββΆβ Booking ββββββββΆβ BookingParticipant β
β Search β β (DRAFT) β β (optional) β
βββββββββββββββββββββ βββββββββββ¬ββββββββββ βββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββ
β Payment β
β Integration β
βββββββββββ¬ββββββββββ
β
βΌ
βββββββββββββββββββββ
β Booking β
β (CONFIRMED) β
βββββββββββββββββββββ
Main Database Tables
Core Booking Entities
- booking: Primary reservation record with status, dates, customer, resource, and pricing
- bookingParticipant: Optional participants for sports like padel/tennis where individual players pay separately
- bookingExtra: Optional add-ons like equipment rental or services
Configuration & Structure
- bookingArea: Physical locations with operating rules and time configurations
- bookingResourceType: Categories of resources (Padel Court, Tennis Court, Spa Room)
- bookingResource: Individual bookable units within areas
- bookingType: Booking configurations defining duration, pricing, rules, and restrictions
- bookingCategory: Classification system for organizing booking types
Advanced Features
- bookingCrossing: Defines how one booking affects other resources (golf crossover management)
- bookingRule: Conditional rules limiting bookings per customer/time period
- bookingPeriod: Seasonal or special availability periods for resources
- bookingInterval: Predefined time slots available in areas
- bookingBlocking: Temporary blocks preventing bookings (maintenance, events)
User Interface & Views
- bookingView: Custom occupation grid configurations
- bookingViewItem: Elements displayed in occupation views
- bookingViewProfile: Saved view preferences per user
- bookingMode: UI behavior modes for different booking scenarios
Extensions & Metadata
- bookingLevel: Customer skill levels/handicaps for filtering and matching
- bookingOrigin: Source tracking (phone booking, mobile app, website)
- bookingAreaAlert: Customer-facing alerts and notifications
- bookingAreaWidget: Interface widgets for customer-facing booking areas
Booking Lifecycle
DRAFT (0) βββββ
β
ββββΆ NO_COST (1) βββ
β β
ββββΆ PENDING (2) βββΌβββΆ Check-in/Check-out
β β
ββββΆ PAID (3) βββββββ
β
βΌ
CANCELED (4)
Status Flow: 1. Draft (0): Temporary reservation during booking process (expires automatically) 2. No Cost (1): Free bookings that require no payment 3. Pending (2): Awaiting payment confirmation 4. Paid (3): Confirmed and fully paid reservation 5. Canceled (4): Canceled reservation with potential refund processing
Crossings System (Golf & Complex Sports)
The crossings feature solves the complex problem of resource interdependency in sports like golf:
Tee 1 Booking (10:00 AM, 18 holes)
β
β (triggers crossing after offset)
βΌ
Tee 10 Blocked (12:00-14:00 PM)
β
β (prevents conflicts when players)
βΌ
Players cross from hole 9 to hole 10
Configuration: - Duration: How long the crossing lasts - Offset: Delay before crossing starts - Resource Mapping: Which resources get blocked - Multiple: Support for multiple simultaneous bookings
Key Features
Multi-Resource Management: Single bookings can utilize multiple resources simultaneously.
Slot-based Capacity: Resources can have multiple slots (e.g., Tee 1 with 4 slots, Buggy resource with 30 slots) for concurrent bookings.
Flexible Pricing: Time-based, resource-based, or participant-based pricing models.
Rule Engine: Complex validation system supporting customer limits, advance booking windows, and conditional restrictions.
Online Integration: Customer-facing booking interfaces with real-time availability.
Payment Integration: Seamless connection with billing module for automated payment processing.
Automated Workflows: Email confirmations, reminders, and cancellation notifications.
Comprehensive Reporting: Detailed analytics on utilization, revenue, and customer behavior.
Business Rules
- Draft bookings automatically expire after configured timeout period
- Crossings are automatically created/deleted when parent bookings change
- Customer rules can limit bookings per person/time period
- Resources can have different availability periods (seasonal schedules)
- Booking types can restrict which resources and time slots are available
- Participants (when used) can have individual payment and attendance tracking
- Cancellations can trigger automatic refund processing
- No-show tracking affects customer booking privileges
API Integration
The bookings module exposes comprehensive APIs for: - Real-time availability searching with complex filtering - Booking creation, modification, and cancellation - Group booking management with participant tracking - Check-in/check-out processing - Payment status synchronization - Customer booking history and preferences - Administrative tools for blocking and resource management
Advanced Configuration
Time Management: Configurable increments (15min, 30min, 1hr), operating hours, advance booking limits
Capacity Control: Slot-based capacity (multiple concurrent bookings per resource) with overbooking support and waiting lists
Customer Segmentation: Tag-based access control and pricing tiers
Seasonal Operations: Different rules and availability for various time periods
Multi-Location: Centralized management across multiple facilities
This system provides the foundation for any business requiring sophisticated reservation management with support for complex operational requirements, automated workflows, and comprehensive customer management capabilities.