Skip to content

Admin Portal

The admin portal (http://localhost:5173 in the prototype) is the workplace of the agency team. What you see depends on your role — see Roles & visibility.

The landing page answers the morning questions:

  • Units — portfolio size (owners see only their own).
  • Occupancy · next 30 days — booked nights ÷ available nights.
  • Arrivals / departures today — with guest, unit, pax and booking-source dot. Departures are flagged turnover due for housekeeping.
  • New website requests — jump straight to the inbox.
  • Seasonal regulars — yearly returning guests who haven’t booked their usual window yet, with favourite unit, usual window and predicted dates. Prepare option opens a pre-filled hold in the calendar (see Calendar → Returning guests).

A visual card grid of the whole portfolio: cover photo, category badge (Lifestyle / Luxury), bedrooms, bathrooms, guests, size, nightly base rate and a 30-day occupancy ring. Search by name, area or building; filter by category.

The map view (toggle next to the search box) plots the same filtered portfolio on a city map — price pins colored by publication status (green = published, grey = draft, amber = archived), with a popup showing cover photo, occupancy and a jump into the unit page. Units without coordinates are counted below the map.

New unit creates a unit as a draft with the structured master data (name, category, area, rooms, base rate). Complete texts, pricing, amenities and photos in the unit page, then set the status to published. Publishing counts against your plan’s unit limit — above the limit the API refuses with a clear message (drafts are always free).

Overview tab — gallery, key facts, amenities, marketing texts, pricing summary, 30/90-day occupancy and the owners with share % and commission %.

The amenity chips carry the amenity’s icon; Edit (admin/backoffice) opens the assignment dialog. Each amenity cycles through three states: off → included → explicitly NOT included. The last state is for features guests might expect but the property does not have (e.g. Private Swimming Pool) — the website lists it struck through so expectations are managed instead of silently omitted.

Settings tab (admin/backoffice) — the unit’s master data in blocks: Names & status (listing name, internal name, headline, publication status, category), Location, Size & capacity, Responsibilities (agent, cleaning team, landlords), Stay & booking rules (check-in/out times, cleaning block, instant booking, pets), Website listing (description, neighbourhood, house rules, 3D tour) and Licence & portals (permit, Tourism Dirham, Propertyfinder). The Tourism Dirham template is the unit’s DET classification and is set separately from the category: Lifestyle/Luxury is marketing only. Almost every unit is Standard; Deluxe is the rare exception, such as a villa in a gated compound.

Prices tab (admin/backoffice) — base rate, weekly/monthly prices or discounts, minimum stay and pricing model, plus cleaning fee, fee type and deposit.

Both tabs share one Save changes button: it stores the edits of both tabs and publishes them to the website immediately.

A searchable table of all bookings with guest, unit, dates, nights, colour-coded source, status and total. Use it for quick lookups (“when does Ms Meier arrive?”); the calendar remains the primary working surface.

The tenant-wide master list behind “What this place offers” on the website (admin/backoffice). Create, rename and delete amenities and upload an icon per amenity (SVG/PNG/WebP, max. 256 KB). The table shows how many units use each amenity and on how many it is marked not included. Deleting an amenity removes it from all units and from the website immediately.

The demo seed ships with the 32 real amenities (incl. their original SVG icons) collected from the reference site’s apartment pages.

Nightly prices are never fixed: every quote — website, chatbot, admin booking, invoice — resolves each night against the recurring price calendar (admin/backoffice). Whoever books New Year’s Eve in July pays the New Year’s rate.

  • Category templates apply to all units of a category (Lifestyle/Luxury), e.g. Winter high season Oct 1 – Apr 30 +20 % or New Year’s peak Dec 27 – Jan 3 +75 %, min stay 3. Seasons recur every year; a range whose end lies before its start wraps over New Year.
  • Unit rules & overrides adjust a single unit: either an extra season or an override that replaces a template for that unit (also possible: switch it off entirely). Overrides can use a percentage on the base rate or a fixed nightly price.
  • On overlap the unit rule wins over the template, then the higher priority, then the shorter (more specific) season. Nights outside every season fall back to the unit’s base rate.

The unit page shows the effective seasons (inherited templates plus own rules) under Pricing → Seasonal prices, where you can add unit seasons and override templates in place.

Every “Request to book” from the public website lands here with guest contact, dates, message and the quoted total.

  • Convert to booking — creates a confirmed booking with source Website in one click (the availability guard still applies; if the nights were taken meanwhile you get a clear warning instead of a double booking).
  • Reject — marks the request as rejected.

Per-agency Airbnb / Booking.com connection settings — connect toggle, account reference, last-sync time and a log of recently imported reservations. This is a visual preview of the channel manager: imports are demo data (flagged ⚡ Auto-imported in the calendar and booking details); the live API/iCal sync ships with the channel-manager phase.

Once a stay is fully paid, the booking’s finance panel shows the landlord payout line (owner, share, commission). Record payout to landlord books the transfer — the landlord’s dashboard immediately moves the amount from received to paid out (see Landlord portal).

See Legal editor.