Room Booking

Stop Double-Booking Your Spaces

Shared spaces — halls, studios, equipment, vehicles — are some of the most fought-over resources in any organization.

The pain it solves: Manual booking (a shared calendar, a whiteboard, a group chat) inevitably leads to double-bookings and last-minute scrambles.

How it helps:

  • Rooms and bookable resources are modeled the same way as any other bookable item — with availability, capacity, and scheduling rules enforced automatically.
  • Bookings tie directly into the Events and Orders system, so a room booking can be a simple reservation or a paid booking (e.g., renting a hall) using the same underlying engine.
  • Conflicts are checked automatically at booking time, preventing the same space from being double-booked.
  • Booking activity can trigger Automation rules — reminders, confirmations, and follow-ups — without staff needing to manually track every reservation.

The happy workday: Book a room in seconds, trust that the system has already checked for conflicts, and never discover a double-booking the day of the event.

Why This Matters for Your Organization

A dedicated booking engine removes the manual conflict-checking burden from staff, and because it ties into automation, reminders and confirmations happen without anyone needing to remember to send them.


Technical Details

Booking functionality is implemented in BookingService (ExireNexus.Services/Services/BookingService.cs), working alongside the Event model (ExireNexus.Shared/Models/Event.cs) — the platform's calendar entity, covering room bookings, public events, appointments, and recurring events under one type.

Key implementation points:

  • Bookable resources (rooms, equipment) are represented as Event-linked entities with capacity and time-slot constraints, allowing the same booking logic to serve a simple internal room reservation or a public paid booking.
  • BookingAutomationProcessor (ExireNexus.Services/Services/Automation/BookingAutomationProcessor.cs) plugs into the shared AutomationBackgroundService, so booking confirmations, reminders, and follow-ups are handled by the same automation engine used across the rest of the platform — no bespoke scheduling code for bookings.
  • Where a booking involves payment (e.g., renting a hall), it flows through ShopOrder/ShopOrderItem, which can link to an Event for the booked time slot — reusing the commerce engine instead of building a parallel payment path for bookings.
  • Conflict detection is enforced at the service layer before a booking is persisted, ensuring double-bookings are rejected consistently regardless of which UI (Backstage or public site) initiated the request.

This reuses the platform's existing Event (calendar) and Order (transaction) entities rather than introducing a separate booking-specific data model, consistent with the platform's core design principle of multi-purpose entities.



Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.