Amenities¶
The Amenities module manages bookable common-area resources: pools, gyms, function rooms, BBQ pits, tennis courts, lounges. Residents reserve, you set the rules, the system handles the rest.
What residents see¶
Residents see the Amenities tab in their portal:
- Available now — every amenity, its capacity, today's open slots.
- Book a slot — pick the amenity, the date, the duration, and any options (e.g. "I'll bring 8 guests").
- My Bookings — upcoming + past reservations.
- Cancel — up to the cutoff window your facility has set (typical defaults: 24 hours for the gym, 72 hours for the function room).
- Booking fee — if your facility charges per-booking, residents see the amount and can pay it now or have it added to their next invoice.
Residents can't double-book overlapping slots, can't book past the amenity's operating hours, and can't book when their account is in arrears (this is configurable).
What facility admins do¶
Set up an amenity¶
Amenities → Add amenity:
- Name (Pool, Gym, Function Room, etc.)
- Capacity (max simultaneous occupants — useful for the pool)
- Operating hours per day of week
- Booking unit — slot length (e.g. 1 hour for the gym, 4 hours for the function room)
- Booking fee — flat per booking, or per-hour, or zero
- Approval required? — Function rooms typically yes (so management can confirm the resident has paid), pools and gyms typically no (auto-approved if the slot is open).
- Cancellation cutoff — how many hours' notice required.
- Photo — uploaded image shown in the resident view.
Approve / decline pending bookings¶
The Pending tab lists requests awaiting approval. Each shows the resident, the amenity, the slot, and any fee status. Click Approve or Decline with an optional reason.
Auto-approve rules can be configured per amenity — e.g. "auto-approve if balance is current AND booking is at least 24 hours out".
Block out periods¶
For maintenance, private events, or staff training, you can block a range:
Amenities → pick the amenity → Block → date range + reason.
Residents see "Closed for maintenance" in those slots and can't book.
Reports + dashboard¶
Amenities → Reports has: - Bookings per amenity per month - Top users (which residents use which amenity most — useful when considering capacity expansion) - Revenue from booking fees - No-show rate (bookings that were paid but the resident never showed — relevant for the pool / gym where the door doesn't track entry)
A Dashboard tab sits alongside Reports with KPI tiles + charts for the current period — bookings, occupancy rate, revenue, no-show rate. Same period selector pattern as other module dashboards (Weekly / Monthly / Quarterly / Yearly + sub-period + year). Periodic email reports — generated by cron and sent to the recipient list configured in Settings → Amenities → Periodic reports — run off the same period selector as the dashboard.
Tips¶
- Pool capacity caps prevent overcrowding — set a realistic number. Residents trying to book past the cap see "fully booked" and get put on a waitlist if you've enabled it.
- Function rooms benefit from approval-required + a deposit charge — reduces last-minute cancellations and damage disputes.
- Recurring weekly bookings (resident wants the gym at 6 AM every weekday) can be set up by an admin on the resident's behalf — saves them from manual rebooks.
- Push and Telegram notifications for approved bookings reach residents faster than email for time-sensitive events.
Process flows¶
End-to-end procedures the mgmt team runs day-to-day. Steps are anchored to the actual UI labels.
Resident books an amenity¶
- Resident opens Amenities → pick a venue (Pool / Gym / Function room / BBQ / etc.).
- Available slots load on the calendar — already-booked, blocked-out, and capacity-full slots are dimmed.
- Tap a slot → confirm party size + duration (within the venue's configured min/max).
- If the venue has a fee, the resident sees the amount + accepts the line; charge posts to billing on confirm.
- Confirm booking — booking lands as Confirmed (auto-approved venues) or Pending (approval-required venues — see flow below). Resident gets push + email confirmation.
Approve / decline a booking (mgmt)¶
For venues configured as approval-required.
- Amenities → Pending approvals filter.
- Open the booking → review resident, party size, time slot, any special requests.
- Approve → booking flips to Confirmed; resident notified. Decline → pick a reason (Capacity / Maintenance / Conflict / Other); fee is auto-refunded if collected; resident notified with the reason.
- SLA: pending bookings auto-cancel after 24 h with no decision (configurable in Settings → Amenities → Auto-cancel pending after) so the calendar doesn't fill with ghost reservations.
Set up a new amenity¶
- Settings → Amenities → + Add Venue.
- Capture name + capacity + open hours + slot length (e.g. 1 h or 2 h).
- Pick the booking model: Free / Per-booking fee / Per-hour fee. Per-hour reads from the same Fee Setup table as parking + utilities.
- Choose Auto-approve or Approval-required — drives the resident-side flow.
- Optional: configure max-bookings-per-resident-per-week, cancellation cut-off, photo of the venue.
- Save — venue appears on the resident-side picker immediately.
Cancel / refund a booking¶
- Resident opens their booking → Cancel before the cancellation cut-off (default 24 h before slot).
- Refund handling:
- Auto-refund if cancelled before the cut-off + the booking was paid.
- No refund if cancelled inside the cut-off window — operator can manually override via Amenities → booking → ⋯ → Refund.
- Mgmt-initiated cancel (e.g. venue closed for maintenance) always auto-refunds, regardless of cut-off, with a templated reason emailed to the resident.