Two halves to try: the public booking site a guest uses, and the staff operations app that runs the hotel. The interesting part is where they meet — book a room as a guest, then watch it arrive at the front desk.
Every screen in the product is covered below — about 96 minutes end to end, or pick a section from the contents. Nothing you do can break anything permanently.
If you only have five minutes
This is the shortest path that shows what the product actually does — both halves, sharing one set of data.
1.Book a room on the public site and pay — you'll land on a confirmation page.
2.Sign in as front desk and find that same booking waiting on the arrivals board.
3.Check the guest in, taking a deposit.
4.Switch to finance and open Billing — the folio and the deposit are already there.
5.Switch to housekeeping and see the room in the queue after check-out.
Before you start
Everything lives in your browser. Your bookings and changes are stored on this device only. Nobody else sees them, and they survive refreshes, closing the tab, and coming back tomorrow.
Break things freely. When you want a clean slate, use Reset demo data in the sidebar of the staff app. That puts everything back to how it started.
“Today” is really today. Arrivals and departures are worked out from the current date, so the board is always current.
Getting into the staff app
The staff side isn't linked from the guest site's main navigation, the same way a real hotel's wouldn't be. To reach it:
3Sign in with any email below. The password for every account is password.
Or go straight to the sign-in page if you'd rather skip the footer.
Each role sees a genuinely different application — that's worth trying, not just a detail. Once you're in, the quickest way to switch is the user menu at the bottom of the sidebar; you don't need to sign out.
Role
Email
Sees
Administrator
admin@o-ghenhotels.com
Everything — all 11 sections
Front desk
l.bianchi@o-ghenhotels.com
Front Desk, Bookings, Rooms, Guests, Dashboard
Finance
n.balewa@o-ghenhotels.com
Billing, Reports, Dashboard, Bookings, Guests
Housekeeping
n.osei@o-ghenhotels.com
Housekeeping, Rooms, Dashboard
Housekeeping supervisor
k.boateng@o-ghenhotels.com
As housekeeping, plus inspections
Maintenance lead
v.alama@o-ghenhotels.com
Maintenance, Rooms, Dashboard
Maintenance technician
b.okafor@o-ghenhotels.com
Maintenance — can't assign or block rooms
Two accounts should turn you away, which is the point of them: i.duarte@o-ghenhotels.com is suspended, and c.eze@o-ghenhotels.com was invited but never activated.
01
The guest booking site
Signed in as Signed out — use a private window·12 min
The half your own customers would see. It shares one set of data with the staff app, which is what the last steps below demonstrate.
1
Open the homepage and scroll through it.
Expect Five room types with their own photography, amenities, location and contact sections.
2
Search using the booking bar — pick dates and 2 guests.
Expect Only rooms genuinely free for those dates, priced for the number of nights.
3
Set guests to 8 and search again.
Expect Rooms that sleep fewer are unavailable. You should never be able to book 8 people into a room for 2.
Try to break it
4
Hand-edit the URL to a check-in date in the past.
Expect Sent back to the homepage rather than shown a dead-end results page.
Try to break it
5
On the results page, add two or three rooms of different types, then continue.
Expect A review screen listing each room separately — one reservation, several rooms.
6
Set the party size across those rooms.
Expect Guests are seated room by room, and no room can be given more people than it sleeps.
7
Fill in your details and pay.
Expect A confirmation page with a booking code, listing every room on the reservation.
8
Copy the confirmation URL, delete the ?t=… from the end, and reload.
Expect A 404 — not somebody's booking. That token is the only thing standing between a guessed URL and a guest's name and email.
Try to break it
9
Press Download / Print.
Expect A print preview with a clean letterhead — no navigation, no buttons.
10
Press Share.
Expect On a phone, the share sheet. On a desktop, the link is copied and confirmed.
11
Go to Manage booking and look the reservation up with the code and email.
Expect It finds it. Try a mismatched email and it won't.
12
Cancel one room of the reservation, not all of them.
Expect You're told that room's own share of the refund — not the whole booking's.
13
Reopen your original confirmation link.
Expect It now reflects the cancellation instead of still saying confirmed.
02
Dashboard
Signed in as Humphrey Ukhurebor — administrator·4 min
The morning view. Every figure here is a summary of a module you can open and check.
1
Read the top row: occupancy, revenue, arrivals, departures.
Expect Occupancy shows the count it's derived from, e.g. 28/48 rooms.
2
Compare the housekeeping and maintenance cards against those modules.
Expect The numbers agree with the screens they summarise.
Try to break it
3
Look at the 7-day revenue trend and the room-status map.
Expect The status map's legend counts add up to the property's full room count.
4
Use Export to download the day's summary.
Expect A CSV of what's on screen.
5
Switch to Leo Bianchi (front desk) and return to the Dashboard.
Expect No revenue or ADR anywhere. The card isn't hidden by CSS — it isn't rendered at all.
Try to break it
03
Front desk
Signed in as Leo Bianchi — front desk·12 min
The busiest part of the product: arrivals, departures, walk-ins and the rooming board.
1
Read the Front Desk board — quick actions, room snapshot, arrivals, departures, live activity feed.
Expect The tile counts match the lists beneath them.
2
Open an expected arrival and start the check-in.
Expect Check In stays disabled until you record an ID and flip Identity verified. That gate is deliberate.
3
Take a deposit before completing it, then check the guest in.
Expect The room goes occupied, and the activity feed logs it.
4
Switch to Ngozi Balewa (finance) and open Billing.
Expect The folio the desk just opened is there, with the deposit already on it.
Try to break it
5
Back as front desk: check in a guest to a room someone hasn't left yet.
Expect Refused, naming who is still in the room.
Try to break it
6
Mark an expected arrival as a no-show.
Expect It stops holding its room, and the room returns to the board.
7
Open Room Assignment.
Expect A seven-day board of arrivals still needing a room, grouped by day.
8
Move a guest to a room in a different tier.
Expect You're asked whether to charge the difference or honour the original rate — and the choice is written to their folio as its own line.
9
Start a Walk-in Booking. Try a $5,000 deposit on a $190 room.
Expect Refused — and nothing is left behind. Check Guests to confirm no half-made guest was created.
Try to break it
10
Complete the walk-in properly with a sensible deposit.
Expect The guest is checked in immediately and appears at the top of the activity feed.
11
Check a departing guest out. Add a charge, then add a negative amount as a discount.
Expect Both appear as their own lines — the folio reads as a history, not a total.
12
Try to complete check-out with money still owing.
Expect Refused, naming the amount.
Try to break it
13
Settle the balance and complete it.
Expect The room becomes dirty and lands in the housekeeping queue.
04
Bookings
Signed in as Humphrey Ukhurebor — administrator·8 min
1
Search the list by guest name, booking code, and confirmation code.
Expect All three find it. The stats above the list agree with the list.
2
Filter by status and by date.
Expect Counts on the chips match what's shown.
3
Create a booking for a single room with no deposit.
Expect It's held as pending — unguaranteed.
4
Create another for several rooms at once, taking a deposit.
Expect One reservation, one combined folio — not one invoice per room — and it's confirmed rather than pending.
5
Try to book more guests than a room sleeps; a room already taken for those dates; and a room you've blocked in Rooms.
Expect All three refused, each with a reason.
Try to break it
6
Open a booking and modify it — change the room, the dates, the party size.
Expect The same rules apply to a modification as to a new booking.
7
Cancel a paid booking, reading the dialog before you confirm.
Expect The refund it promises is the refund actually recorded on the folio afterwards.
Try to break it
8
Try that same cancel as front desk.
Expect Refused. Front desk can cancel but can't issue refunds, so it won't quietly cancel and keep the money.
Try to break it
05
Rooms
Signed in as Humphrey Ukhurebor — administrator·7 min
1
Look at the room grid and its status legend.
Expect 48 rooms; the legend counts sum to that total.
2
Filter by floor and by status.
Expect The inventory summary reflects the filter.
3
Open a room and edit its settings — bed configuration, view, size, amenities, description.
Expect Saved changes persist through a refresh.
4
Override that room's nightly rate.
Expect The new rate is what the public site quotes and what a new booking bills.
Try to break it
5
Change the room's status by hand.
Expect It won't let you set a status the bookings contradict — an occupied room can't simply be marked available.
Try to break it
6
Block a date range on the room with a reason.
Expect Search those dates on the public site — that room isn't offered. Try to book it internally and you're refused.
Try to break it
7
Open the Availability board.
Expect A seven-day grid of every room, showing bookings, blocks and maintenance together.
06
Housekeeping
Signed in as Nia Osei, then Kwame Boateng (supervisor)·8 min
1
Read the queue: to clean, in progress, awaiting inspection, signed off.
Expect The 'at a glance' numbers match the tabs beneath them.
2
Open a dirty room and start cleaning it.
Expect It moves to in progress and is assigned to you.
3
Try to mark it clean with checklist items outstanding.
Expect Refused until the checklist is complete.
Try to break it
4
Work through the checklist and complete the room.
Expect It goes back on the board as available — inspection is a quality check on top, not a gate.
5
Use Report maintenance issue from the cleaning screen.
Expect A real ticket appears in Maintenance, and the note is left on the room for whoever inspects it.
Try to break it
6
Add a note to a task, and hand a task to another cleaner.
Expect Only on-shift people who can actually clean are offered.
7
As Kwame: inspect a cleaned room, rate the items, and approve it.
Expect Signed off, with any remark kept on the room.
8
Reject another inspection.
Expect It demands a reason, then returns the room to dirty with the checklist cleared.
9
Try to inspect a room you cleaned yourself.
Expect Refused — nobody signs off their own work.
Try to break it
07
Maintenance
Signed in as Victor Alama (lead), then Ben Okafor (technician)·8 min
1
Read the board: open, in progress, inspecting, resolved today, urgent, rooms blocked.
Expect Filter chips match the counts.
2
Create a ticket against a room, with a category, priority and assignee.
Expect It opens on the ticket screen with its history started.
3
Tick 'block room' on a room that has a guest checked in.
Expect It won't take the room out from under them; the ticket's history records why.
Try to break it
4
Assign an outsourced contractor instead of a technician, adding a new one.
Expect A ticket is assigned to a person or a contractor, never both.
5
Start the repair. Log the work, add parts, and record what the contractor was paid.
Expect All of it persists on the ticket.
6
Send it for inspection, then approve it — choosing whether the room returns as available or dirty.
Expect If dirty, it appears in the housekeeping queue.
Try to break it
7
On another ticket, reject the repair.
Expect A reason is required, and it returns to in progress for the same person.
8
Close a fresh ticket without repairing it.
Expect Allowed only before work starts, and it puts any blocked room back on the board.
9
Switch to Ben Okafor and open a ticket.
Expect He can work it but can't assign people, block rooms, or record payments.
Try to break it
08
Billing
Signed in as Ngozi Balewa — finance·8 min
1
Read the four figures across the top against the list below.
Expect They agree. Invoices are ordered the way finance chases them: overdue, partial, unpaid, then settled.
2
Filter by status and search by invoice number, guest, booking code and confirmation code.
Expect All four find the invoice.
3
Open a folio.
Expect Line items, payments received, and the balance, with every payment showing method and who took it.
4
Record a payment on an unpaid invoice.
Expect Balance drops; status moves to partial.
5
Try to pay more than the balance.
Expect Refused.
Try to break it
6
Refund part of a settled invoice — say $200 of a paid $980.
Expect It stays Paid with a $0 balance and gains a Refunded line. It must NOT reopen as overdue, Outstanding must not rise, and the guest must not be asked for money back.
Try to break it
7
Create an invoice for a booking that hasn't got one, using a negative line as a discount.
Expect The total quoted on the button is the total actually raised.
Try to break it
8
Export the CSV and open it.
Expect Total, Paid, Refunded, Balance and Status reconcile.
09
Guests
Signed in as Humphrey Ukhurebor — administrator·3 min
1
Search the directory and open a profile.
Expect Contact details, stay history and total spend.
2
Check the stay history against the count above it.
Expect Listed per reservation, and the two agree.
Try to break it
3
Edit a guest's details.
Expect Saved, and reflected on their bookings.
4
Look for a delete action.
Expect There isn't one. Guest records are permanent history — that's deliberate.
10
Staff
Signed in as Humphrey Ukhurebor — administrator·5 min
1
Read the directory — roles, shift status, account standing.
Expect Listed in name order, with the stats above matching.
2
Add a staff member and give them a role.
Expect They appear immediately, and can be picked in the user switcher.
3
Try to add someone with an email already in use.
Expect Refused.
Try to break it
4
Change someone's role, then deactivate their account.
Expect A deactivated account is turned away at sign-in — try it with i.duarte@o-ghenhotels.com.
Try to break it
5
Reactivate that account.
Expect It returns to its previous role rather than being promoted.
6
Try to remove your own administrator rights.
Expect Refused — you can't lock yourself out.
Try to break it
11
Reports
Signed in as Ngozi Balewa — finance·4 min
1
Switch between the date ranges.
Expect Occupancy, ADR and RevPAR all move with the range — not just the chart.
2
Read the revenue trend, booking sources and room-type breakdown.
Expect The room-type breakdown says what period it covers.
3
Look for figures marked as projected.
Expect Anything estimated rather than measured says so, instead of presenting itself as fact.
4
Export the report.
Expect A CSV matching what's on screen.
12
Settings
Signed in as Humphrey Ukhurebor — administrator·6 min
Five tabs: Property, Room Types, Notifications, Integrations, and Roles & Permissions.
1
Edit the property details — name, city, contact.
Expect The public site's footer and contact section pick the change up.
2
Add a room type, and change an existing type's base rate.
Expect The new rate flows to the public site and to new bookings.
Try to break it
3
Change the notification preferences and look at the Integrations tab.
Expect Saved and persisted.
4
Open Roles & Permissions and turn a permission off for a role.
Expect Switch to someone with that role — the feature is gone for them.
Try to break it
5
Create a new custom role and assign it to a staff member.
Expect They get exactly the sections that role allows.
6
Try to create a role with no permissions at all.
Expect Refused rather than silently creating something unusable.
Try to break it
13
Things on every screen
Signed in as Any role·3 min
1
Use the search box in the top bar.
Expect Results grouped across bookings, guests and rooms, each opening the right screen.
2
Open the notifications bell.
Expect Unread count, and Mark all read clears it.
3
Use the user menu at the bottom of the sidebar to switch accounts.
Expect The whole app changes to that person's role without signing out.
4
Use Reset demo data in the sidebar.
Expect Everything returns to how it started. This is your undo for the entire walkthrough.
14
Roles and access
Signed in as Several·3 min
Each role sees a different application. Paste these URLs straight into the address bar rather than clicking — a hidden menu item is not the same as a closed door.
1
As housekeeping, go to /billing and then /staff.
Expect Redirected to your own home screen.
2
As front desk, go to /billing/folio/bk_0007.
Expect Redirected.
3
As a maintenance technician, go to /reports.
Expect Redirected.
4
As finance, go to /front-desk/check-in/bk_0015.
Expect Redirected.
15
On a phone
Signed in as Any role·5 min
Every screen was built mobile-first. Open this same link on your phone.
1
Work through the guest booking journey on a phone.
Expect Nothing scrolls sideways at any point.
2
Open the staff app: dashboard, front desk, a check-in, billing.
Expect Tables become cards, and the action bars stay reachable at the bottom of the screen.
3
Open the navigation drawer and switch sections.
Expect It closes behind you rather than staying open over the page.
Known — no need to report
These are deliberate or already on the list.
Booking and confirmation codes are derived from internal ids, so they aren't truly random yet.
Some seeded invoices quote a nightly rate that doesn't match the room's current rate — those labels were written by hand. The arithmetic underneath is consistent.
Room photos can't be uploaded from the admin yet; they're files in the build.
A downgrade credit on a prepaid stay doesn't refund automatically. It shows on the folio with a working Process Refund button — issuing it is a deliberate decision.
An Offers section exists in the code but isn't shown on the public site.
Reports covers a fixed set of ranges; a custom range needs more history than the demo carries.
If you find something
The most useful reports say four things:
Which account you were signed in as — role changes almost everything here.
What you clicked, in order.
What you expected, and what happened instead.
Whether it survives a refresh — a stale screen and wrong data are different problems.