Examples
Real-world use case configurations — salon, hotel, restaurant, event venue — plus Stripe and email integration patterns.
Real-world use case configurations and integration patterns.
Use Cases
Salon / Barbershop
Staff are resources, services are treatments. Each stylist has their own recurring weekly schedule.
Typical services: duration: 30, durationType: 'fixed', bufferTimeAfter: 10
Hotel
Rooms are resources with quantity equal to the number of identical rooms of that type. Each guest stays for a full calendar day — use full-day duration.
Restaurant / Event Space
Group bookings where total guest count matters. Use per-guest capacity mode with a maximum party size enforced via guestCount.
Bookings with guestCount: 4 occupy 4 of the 60 total seats. The room is full when total booked guests reach 60.
Event Venue (Custom Status Machine)
Events go through an approval workflow before being confirmed. Use a custom status machine.
Integration Patterns
Stripe Payment Gate
Hold the time slot with a pending reservation while the customer pays. Confirm on successful payment.
Email Notifications
Use afterBookingCreate and afterStatusChange hooks to send transactional emails:
Multi-Tenant Deployments
Scope all queries to a tenant using beforeBookingCreate to inject tenant metadata, and access control functions to filter by tenant: