Hospitality · App Starter
Availability grid, reservation lifecycle, and housekeeping board — a property management system generated as your own code.
An independent hotel runs on one question asked a hundred ways: which rooms, which nights, at what rate? This starter generates the system that answers it — a tape-chart availability grid, reservations that move cleanly from booked to checked out, rate plans with seasons, and a housekeeping board the front desk trusts — delivered as an application the property owns outright.
01 · Data model
Everything a front desk does resolves to these six tables. Availability is computed, never stored — the grid derives from reservations against rooms — so the system can't double-book what the math won't allow.
| table | what it holds |
|---|---|
rooms | Physical units with number, floor, type, status, and out-of-order windows for the week the shower is being retiled. |
room_types | The sellable categories — standard queen, deluxe king, family suite — carrying occupancy limits, base rates, and photos. |
reservations | Stays with arrival, departure, room assignment, rate, status, and balance — the row every other screen orbits. |
guests | Profiles with contact details, stay history, and preferences, so the third visit starts with their favorite floor already known. |
rate_plans | Pricing rules by season, day of week, and refundability — weekend uplifts and a non-refundable discount without spreadsheet math. |
housekeeping_tasks | Per-room cleaning and inspection work, generated from checkouts and stayovers, with status the front desk sees live. |
02 · Screens
The classic tape chart: rooms down the side, dates across the top, reservations as bars you can read at a glance. Walk-in wants three nights in a king? The gap is visible immediately, and assigning it is a click on the empty cells.
Bookings move through a strict state machine — inquiry, confirmed, checked in, checked out, with no-show and cancellation branches — and each transition stamps who did it and when. Modifications reprice against the rate plan automatically, so a shortened stay refunds the right nights.
Checkouts spawn cleaning tasks, stayovers spawn refreshes, and the board shows every room as dirty, clean, or inspected in real time. The front desk stops radioing upstairs to ask whether 204 is ready, because the answer is on their screen.
Occupancy rate, ADR, and RevPAR computed nightly from your own reservations table, with pace views for the weeks ahead. When the numbers look wrong you can inspect the query — a luxury no vendor dashboard extends.
03 · Process
Room count, room types, seasons, how you price weekends, whether breakfast is a rate or an add-on — Dual7 shapes the starter around the property you actually run, not a 400-room archetype.
Refine the live system in conversation: add a pet-fee line, split the family suite into connecting rooms, give housekeeping a mobile view. Every tweak is a real code change you can inspect.
Ship to your own hosting through approval gates with an audit trail. Guest data and the booking ledger stay on infrastructure the property controls.
04 · Fit
Paper and wall calendars work until a double-booking costs a Saturday night and a review score. The grid gives the same at-a-glance control with arithmetic that never sleeps — and no percentage of each booking skimmed by a platform.
Cloud PMS pricing per room per month is calibrated for properties with forty rooms, not nine. An owned system costs the same whether you run six rooms or sixty, which changes the economics of a small property permanently.
Half-board packages, multi-night minimums on festival weekends, a rate that includes the vineyard tour — boutique properties sell experiences that standard PMS rate engines flatten. When the pricing rules are your code, the offer defines the system rather than the reverse.
Two or three properties usually means two or three incompatible systems. Generating each property from the same starter yields one codebase, one reporting shape, and consolidated occupancy numbers the owner can finally see on one screen.
05 · Yours
Properties diverge in the details, and the details are editable: add a channel-manager sync that writes external bookings into the reservations table, a deposit schedule for long stays, a minibar posting screen, or city-tax lines that appear on the folio automatically. In Vibe mode these are conversations; in the codebase they're ordinary features your developer can also build directly.
The starter is also a base for the guest-facing layer. A direct booking page reading live availability from your own tables — with no commission on the bookings it takes — is the highest-leverage extension most independents add first. Because the whole stack is yours and has no runtime dependency on Dual7, that page, the confirmation emails, and the payment link are all within reach.
Hotel software has trained the industry to accept rent forever: per-room monthly fees, booking commissions, surcharged payment rails, and a guest database you can browse but never truly hold. Generating your PMS as source code exits that arrangement — the reservations ledger, guest histories, and rate logic live in your database, and adding a room or a property adds no license line.
Owning it means operating it, and hospitality is unforgiving of downtime — which is why the governed pipeline gates every change behind approvals and keeps an audit trail, and why the state machine guards the booking ledger against casual edits. The system is small, boring, and yours: exactly what a front desk wants at 11 p.m. on a sold-out night.
A working property management system in code you own: rooms, room_types, reservations, guests, rate_plans, and housekeeping_tasks, with a tape-chart availability grid, a full reservation state machine, a live housekeeping board, and occupancy/ADR/RevPAR reporting.
Yes, structurally — availability is computed from reservations against rooms, and the system refuses assignments that overlap. There's no separate availability calendar to fall out of sync, because there's no stored availability at all.
Not out of the box — the starter is the system of record. Because you own the codebase, a channel-manager integration is a normal engineering task that writes inbound bookings into the same reservations table, and many small properties start direct-only to keep commissions.
Rate plans hold rules by date range, day of week, and refundability, and reservations price from them at booking and repricing time. High season, weekend uplifts, and a stricter cancellation tier coexist per room type — and unusual rules are edits to logic you can read.
The housekeeping board is a web screen, so it works on any phone browser; a simplified mobile view for room attendants is a common Vibe-mode addition. Status changes reach the front desk instantly either way.
The bones fit — units, bookings, cleaning turnovers — but multi-property short-stay operations lean harder on owner statements and per-listing channels. See the property management starter's vacation-rental version for that shape; this starter is tuned for a hotel's front desk.
Dual7 App Starters
Availability grid, reservation lifecycle, and housekeeping board — a property management system generated as your own code. Describe your version to start — the output is a project you own.