Hotel Reservations
v0.1.1
Open live demo → Screens
Overview
Two surfaces on one set of data, for one independent hotel in one building. A guest searches dates and sees only what is open across every night of the stay, at rates that differ night by night — the breakdown they can expand adds up to the total beside it, because weekends and August cost more and a flat nightly figure would be wrong. They reserve a room type, not a room number, and the confirmation says the room itself is picked when they arrive. Behind the counter it is the day: arrivals, everyone in the building, departures, and a room given only from those that are ready and of the type booked. The folio reads top to bottom — a line per night, then extras, then payments — takes part payments, refuses to be overpaid, and blocks a departure while anything is still owed, naming the amount. The manifest scaffolds eight tables into your connected database and generates the back office around them. Housekeeping here is a room status and nothing more; the app owns the stay and the desk, and stays run one night to fourteen.
Capabilities
- Payments
- Email receipts
- Realtime
What you get
Tables it adds8
- room_types
- room_type_features
- rooms
- extras
- stays
- stay_extras
- charges
- payments
Created fresh, or mapped onto your existing tables at install.
Pages your dashboard gains6
- Front-desk dashboardOccupancy tonight, rooms sold, arrivals and departures, and the average nightly rate.
- TodayWho is arriving, who is in the building and who is leaving, each with what they owe.
- RoomsEvery room by floor and type, with its status and any reason it is out of use.
- CalendarA fortnight of nights by room type, showing how much of each is committed.
- ReservationsThe whole book, filterable, from a held room to a departed guest.
- FoliosEvery stay account with its nights, extras and payments, and what is still to settle.
Roles it pre-builds2
- front-deskReserves, checks people in and out, gives out rooms, adds to a folio and takes payment; marks a room ready. No rates and no settings.
- managerEverything the desk does, plus rates, room types and the reference data — and the reporting across the whole book.
Settings you configure7
- Hotel name
- Time zone
- Currency
- Tax rate
- Rooms ready from
- Rooms to be left by
- Reservation reference prefix
Run it with your own data
Hotel Reservations needs somewhere to keep your data. Answer one question and we will show you the shortest way there.
Do you already use Adminium?
Set everything up together
A static host can only serve the screens. Your data needs a database, and Adminium is what turns it into an admin you can use — so the three go up together.
Deploy everything to DigitalOceanPostgres, Adminium and Hotel Reservations, already connected.
Rather try it on your own machine first?
npx @adminiumjs/adminium No database needed — it asks you for one when it is ready. Then come back here and pick “Yes” above.
Where is your Adminium?
The address you sign in to, for example https://admin.yourcompany.com
That does not look like a web address. It should start with https://
Where should Hotel Reservations live?
Inside Adminium
One place to sign in, and nothing else to deploy. Your team reaches it from the same address as your admin.
Show me how
- Build it:
git clone https://github.com/Adminiumjs/hotel-reservations.git && cd hotel-reservations && npm install && npm run build:surface - Point Adminium at it and restart:
ADMINIUM_SURFACES_DIR=$(pwd)/dist-surface npx @adminiumjs/adminium start - Then open:
https://admin.example.com/apps/hotel/staff/
On its own domain
A separate site with its own URL, talking back to the Adminium you just named.
Vercel hosts the screens only — your Adminium stays where it is and keeps the data. You will paste one key that lets the site read it.
Deploy to VercelVercel will ask for two values. Both are on your Adminium under Studio → Public API.
Or start from the source
Clone it and run it anywhere — the README covers every option.
View on GitHubJust looking? The live demo needs no setup at all and nothing you do in it is saved. Open the live demo