> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.ruoomsoftware.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Architecture

> Architectural overview of the Booking Plugin

## Overview of Booking Plugin Architecture

<img src="https://mintcdn.com/ruoom/S58yk56t2CMCWBwZ/images/booking_plugin_architecture.svg?fit=max&auto=format&n=S58yk56t2CMCWBwZ&q=85&s=3b703d1d8e496b09ec7973ca73cde632" alt="Booking Plugin Architecture Diagram" data-path="images/booking_plugin_architecture.svg" />

This diagram illustrates the architecture of the Booking Plugin, which highlights the interactions between ServiceType, Service, and CustomerCheckin models.

## Booking Plugin URLs

* **Services**: `/services/` - Endpoint for managing services on the Schedule page.
* **Calendar**: `/calendar/` - Shows the customer-facing booking calendar.
* **Manage Booking**: `/ajax/manage_booking/` - AJAX endpoint for managing bookings.
* **Classes Schedule**: `/classes-schedule/` - Displays each customer's service schedule.
* **History**: `/history/` - Shows each customer's booking history.
* **Get Class Context**: `/ajax/get_class_context/` - AJAX endpoint to get class context.
* **Get Class Info**: `/ajax/get_class_info/` - AJAX endpoint to get class information.
* **Check Layout**: `/ajax/check_layout/` - AJAX endpoint to check any layout for the given service.
* **Add Booking Cart**: `/ajax/add_booking_cart/` - AJAX endpoint to add to booking cart.

## Booking Plugin Database Models

* **ServiceType**: Defines types of services with fields for name, price, and description that become default for services.
* **Service**: Represents a service with fields for virtual options and methods for managing participants and schedules.
* **CustomerCheckin**: Generated upon customer registration for a service, this object helps manage registration and check-in.
