Stacey's Place
Spa Management
Manage guest reservations, shared availability, and spa operations.
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
