Hospitality and rentals
Room and unit planning for hotels and rental fleets
Hotels and rental fleets sell time on physical units: a room for three nights, a van for a week. The planning board turns bookings into assignments on specific units, keeps the gaps for cleaning and repairs honest, and shows where inventory is about to run out.
Selling a type, delivering a unit
Guests book a room type, not room 214. Renters book a vehicle category, not a license plate. The operation then assigns each booking to a real unit so that stays fit end to end, upgrades remain possible, and requests such as a quiet or accessible room are respected.
Turnover sets the rhythm. A room checked out at 11:00 must be cleaned and inspected before a 14:00 arrival; a returned car needs cleaning, a fuel check and sometimes a repair before the next pickup. Units also leave inventory for longer: out of order for a plumbing fix, out of service for a refurbishment, in the workshop for scheduled maintenance.
Mistakes reach the customer directly. Two bookings on one unit means a guest walked to another hotel or a renter at an empty counter, so the board must make collisions hard and remaining availability obvious.
Decisions at the front desk and the rental counter
- 01
Which unit gets the booking
Assigning by floor, view, accessibility or mileage, and keeping long stays on units that will not need to change mid-stay.
- 02
Moving a stay to another room
A room move keeps the dates and changes the unit. It is often the only way to fit an extension or free a pair of connecting rooms.
- 03
Taking a unit out of inventory
Out-of-order and maintenance windows must block a unit for a period without pretending to be a booking.
- 04
Protecting the turnover gap
A departure and an arrival on the same day is normal, but only with time for housekeeping or vehicle preparation between them.
- 05
Watching the tight nights
When a type is nearly full on a date, staff stop shuffling bookings and protect what is left.
Modeling stays and rentals
Rows are units grouped by what you sell, events are stays or rentals at their real times, and occupancy is a figure your application computes.
- Resources
- Build a tree of room types and rooms, or vehicle categories and vehicles, with treePreventParentUsage so a group row takes no bookings. Row header columns can show floor and housekeeping status, or plate and mileage.
- Events
- A stay is a multi-day half-open interval, for example 2026-10-02T14:00:00 to 2026-10-05T11:00:00. With useEventBoxes set to “Never”, arrivals and departures are drawn at their real hour inside the day cell, so a departing and an arriving stay share a day without colliding.
- Time scale
- Day cells with month headers suit a front desk; zoom levels for weeks and months show a season. A minimap strip above the grid can carry occupancy per night as computed by your application.
- Rules
- Refuse overlaps on a unit with allowEventOverlap set to false, and block out-of-order periods as disabled cells. For a pure room move, set moveHDisabled on the stay so a drag can change the unit but not the dates. Confirm each assignment with your backend in onEventMove before it is committed.
Planning board and property system
- Multi-day stays drawn at their real arrival and departure times
- Room-type and vehicle-category trees with collapsible groups
- Drag to another unit, with dates optionally locked
- Refusal of overlapping assignments and of drops on out-of-order periods
- A minimap that draws the occupancy series you provide
- Theming for light, dark and brand colors
- Rates, inventory by type and availability sold through channels
- Overbooking policy and the authoritative availability check
- Housekeeping and workshop workflows that change unit status
- Guest and renter data, payments and documents
- Minimum turnover gaps per unit type, enforced as a rule
Working examples
- Casa NomaHotel room planningA shower leaks in Room 104. Rehouse the next guest, block the room for the plumber and find the nights that are already full.
- FleetlineFleet rental planningA compact is grounded on pickup day. Hand its rental to another car, keep the cleaning slot and see where the fleet runs out.
Errors that cost a night
Mixing “last night” and “departure date”
A booking stored with its last night is one day shorter than one stored with its departure date. Pass departure dates as exclusive ends, or set eventEndSpec to “Date” if your data stores inclusive last nights, but never mix the two.
Modeling out-of-order rooms as bookings
A fake reservation inflates occupancy and can be dragged by accident. Use disabled cells for the period, or a locked event of its own kind that your occupancy calculation ignores.
Checking units but not inventory
A booking not yet assigned to a room still consumes one of its type. Validating only the visible rows lets a type be oversold while every row looks fine.
Counting bars instead of nights
Occupancy should count occupied units per night against available units, excluding those out of order. Counting events per day produces misleading peaks.
Questions
How do I show check-in at 14:00 and check-out at 11:00 on a daily timeline?
Pass full date-times such as 2026-10-02T14:00:00 to 2026-10-05T11:00:00 and set useEventBoxes to “Never”. The bar starts partway through the arrival day and ends partway through the departure day, and because ends are exclusive, a 14:00 arrival on the departure day does not overlap.
Can I move a reservation to another room without changing its dates?
Yes. Set moveHDisabled on the event, for example while the user is in a “room move” mode, and a drag can only change the row. Validate the target room in onEventMoving and confirm the move with your backend.
How do I block a room that is out of order?
Mark the cells of that room and period as disabled in onBeforeCellRender. They are hatched, refuse drops and selections, and are not bookings, so they stay out of your occupancy figures. Set cellsDisabled on the resource to take a unit out of service entirely.
Can I use the free Lite edition for an occupancy board?
For a read-only daily view with flat rows, yes: Lite shows bookings, stacks overlaps and supports keyboard navigation. Room-type trees, drag and drop, blocked periods and the minimap require Pro.
Two demos, one model
Casa Noma moves a reservation between rooms and coordinates a maintenance window; Fleetline reassigns a rental while keeping its duration. Both use synthetic data.
Working examples