Stacey's Place

Spa Management

Manage guest reservations, shared availability, and spa operations.

Demo Admin — Not Connected to Live Reservations

Integration Status

Accommodation Platform
Hostaway
Status
Not Connected — Demo Mode
Reservation Source
Mock Data
Webhook Synchronization
Simulated
Spa Reservation Storage
Local Demo Storage
Live Payments
Not Required

This demonstration uses fictional reservations and simulated availability. Hostaway integration will be configured after technical validation and approval.

How the Connection Will Work

The app talks to accommodation data only through a small service interface (AccommodationReservationService). Today a mock implementation serves the fictional stays; a future HostawayReservationService will implement the same contract against the official Hostaway API, with no changes to the guest or admin screens. Actual endpoints and webhook payloads will follow the official Hostaway documentation once credentials are available.

  • Reservation retrieval

    Pull confirmed accommodation reservations — identifiers, listing IDs, stay dates and statuses — from the Hostaway API.

  • Reservation verification

    Validate that a guest has an eligible confirmed stay before spa booking, using the existing AccommodationReservationService interface.

  • Reservation synchronization

    Subscribe to Hostaway reservation update webhooks where supported.

  • Cancellation handling

    When an accommodation reservation is cancelled, invalidate its linked spa reservations — already simulated in Demo Controls.

  • Date changes

    When accommodation dates change, reassess existing spa reservations against the new eligible dates.

  • Webhook reliability

    Plan for duplicate delivery, out-of-order events, failed deliveries, idempotent processing, and periodic reconciliation against Hostaway.

  • Security

    Hostaway credentials stay server-side and never reach the browser. Production guest verification will use a one-time email code or signed access link — a booking reference alone is not sufficient.

Future Production Database

Planned entities for a PostgreSQL backend. Production booking and rescheduling will use database transactions with concurrency-safe locking — the browser-local demo storage is not sufficient for concurrent real guests.

  • accommodation_reservations — id, external_reservation_id, listing_id, guest details, check_in, check_out, status, last_synced_at
  • spa_resources — id, name, active
  • spa_reservations — id, accommodation_reservation_id, spa_resource_id, start_time, guest_end_time, blocked_until, status, created_at, updated_at
  • spa_settings — id, opening_time, closing_time, session_duration_minutes, cleaning_buffer_minutes, max_sessions_per_day, time_zone
  • spa_blocks — id, spa_resource_id, start_time, end_time, reason
  • webhook_events — id, provider, external_event_id, received_at, processed_at, status
  • audit_logs — id, action, entity_id, timestamp, actor