Waitmate Platform
Demo build of a hospitality admin dashboard: reservations, table management, staff and multi-location views. Next.js with Firebase, hosted at waitmate.vercel.app.

Facts about the build and who it was for. Any figure here is shown on a public store listing or site linked on this page — how we present portfolio work.
Project Story
Restaurants and hotels often run bookings, tables and staff in separate tools.
A Next.js dashboard on Firebase that brings bookings, tables, staff and revenue views into one admin panel.
A working demo at waitmate.vercel.app. The numbers inside the demo dashboard are sample data, not results.
Project Details
Waitmate is a hospitality admin dashboard: reservations, table management, staff management, customer records and multi-location views. Sameem worked on the build: the public demo is a Next.js app with Firebase, hosted on Vercel.
Tech Stack
Where to See It
Category
Next.js Demo BuildWaitmate is a hospitality admin dashboard for restaurants and hotels, with sections for bookings, waiters, users and revenue. Sameem Amjad worked on it. It is designed around smart reservations, table management, real-time analytics and multi-location support, and the public build is a demo: a Next.js app with Firebase, hosted on Vercel at waitmate.vercel.app.
What you can check
- Demo build on Vercel: https://waitmate.vercel.app/dashboard
- Sections: Dashboard, Users, Waiters, Booking and Revenue Management
Each item points to something public: a store listing, a live site or a demo build. See our terms for how we present portfolio results.
What problem is Waitmate designed around?
Waitmate is built around a common problem in hotels and larger restaurants: fragmented management systems, and the inefficiency and guest dissatisfaction that fragmentation causes.
Fragmentation is a structural problem before it is a usability one. When bookings, seating, staffing and revenue each live in a separate tool, there is no single authoritative record of what has been promised to guests. Every boundary between those tools becomes a point where information is re-keyed, delayed or contradicted, and the reconciliation work grows with the number of systems rather than with the size of the business.
That matters in hospitality because the economics rest on two variables: how fully capacity is used, and how satisfied guests are. Administrative overhead consumes both. Waitmate's response is consolidation: one platform to manage bookings, staff and revenue, so operations and the numbers describing them come from one product.
What does Waitmate cover?
Waitmate's navigation has five sections: Dashboard, Users Management, Waiters Management, Booking Management and Revenue Management. Its feature set adds four capabilities to that picture: smart reservations, table management, real-time analytics and multi-location support. Read as a system rather than a list, those four form a single loop. Reservations create demand, table management allocates finite capacity against it, analytics measure how well that allocation worked, and multi-location support repeats the loop across more than one property.
Each part of the loop imposes a different requirement on the software. Reservations and table management are transactional and need correctness above all: a booking either exists or it does not. Analytics is aggregative and values freshness more than depth of history. Multi-location is a scoping concern that cuts across both. A single product has to satisfy all three characteristics from the same underlying data.
How is Waitmate put together?
Waitmate is a Next.js (React) app hosted on Vercel, with Firebase behind it: the browser code it serves includes Firebase Authentication, Cloud Firestore and Cloud Storage client code.
The shape is a rich client, a managed backend platform and a deployment host. That concentrates the product's difficulty in two places. Interface code carries the operational workflows, and the data platform carries persistence, identity and access. Everything else is delivery and hosting, which is why a small stack can cover a broad feature set.
Why does React suit an operations dashboard?
A hospitality dashboard is a state-heavy application rather than a content site. Reservations, table state and analytics are all projections of the same rapidly changing data, and the interface has to keep them mutually consistent while someone is part-way through a task.
React's defining property is declarative rendering. Developers describe what the interface should look like for a given state, and React's reconciler computes the minimal DOM updates needed to reach it. That inverts the usual failure mode of operational tools, where every new feature adds another hand-written update path and views quietly drift out of sync with one another as the product grows.
The component model matters just as much for multi-location support. Composable, parameterised components allow the same reservation and table-management building blocks to be instantiated repeatedly against different data instead of being duplicated per property, which keeps the marginal cost of an additional venue closer to configuration than to new feature development.
What does the backend have to provide?
A dashboard like this needs four things from its backend: persistence, identity, access rules and a way to push changes to open screens. Waitmate uses Firebase for that layer: Firebase Authentication for sign-in, Cloud Firestore for data and Cloud Storage for files. That bundling is the substance of the choice: identity, data and files sit in one managed platform under one project, so none of them is a separate service to run.
Firestore offers realtime listeners that deliver changes to an open screen as they are written. For a product whose features include real-time analytics, that beats polling on a timer and hoping the interval is short enough.
What does a reservation system need from its data layer?
Bookings are relational data in the textbook sense. A reservation refers to a guest, a table or room, a time window and a venue, and its value depends entirely on those references being valid. A relational engine such as Postgres can express those relationships as keys and enforce them as constraints, so impossible states are rejected by the store itself instead of relying on every app to behave correctly. A document store such as Firestore, which Waitmate uses, has no foreign keys, so the same guarantees have to come from transactions, security rules and careful document design.
Reservation systems are also, structurally, concurrency problems. Capacity is finite and contested: the same table in the same window can be claimed from more than one place at once, and the cost of getting that wrong is a double booking discovered in front of a guest. Transactional databases exist precisely for that class of problem. Postgres offers transactions with constraints and row locking, and Firestore offers transactions that retry when the documents they read change underneath them.
What does multi-location support demand of real-time analytics?
Multi-location support and real-time analytics are listed as separate features, but each constrains the other. Analytics that are genuinely real time must derive from the same records operations write. Analytics across multiple locations must also be correctly scoped, so a property sees its own figures and any combined view aggregates without double counting.
Holding both properties usually means keeping aggregation close to the transactional data rather than shipping it on a schedule to a separate reporting system. A warehouse refreshed hourly cannot answer an occupancy question about right now, and a second copy of the data quietly introduces a second definition of what a booking is.
A single engine that handles both transactional writes and aggregate queries over them is a reasonable place to carry that tension. With Firestore, aggregates come either from its aggregation queries or from summary documents updated alongside each write.
Where can you see Waitmate?
Waitmate's public build is live at https://waitmate.vercel.app/dashboard. Its navigation covers the dashboard and the users, waiters, booking and revenue management sections, and the figures shown on its dashboard are sample data.
That makes Waitmate a hands-on look at the shape of a hospitality admin tool: what a dashboard for bookings, staff and revenue covers, and how Next.js and Firebase carry it.
Why this stack
- Next.js (React) — an operations dashboard is state-heavy rather than content-heavy. Declarative rendering lets every view be a function of current state, and the reconciler works out the minimal DOM updates, so features can be added without accumulating hand-written update paths that let parts of the screen fall out of step with each other. Waitmate is a Next.js app, which is React with routing and rendering built around it.
- React.js (component composition) — multi-location support is the requirement most likely to be solved badly by copy-paste. Parameterised reservation and table-management components can be instantiated per venue against different data, which keeps an extra property closer to a configuration change than to a new build.
- Firebase — Authentication, Cloud Firestore and Cloud Storage. Firestore is a document database, so the guarantees a reservation needs (a valid guest, table, time window and venue) have to come from transactions, security rules and document design rather than foreign keys; in exchange its realtime listeners push changes to an open dashboard as they are written, which suits live booking and revenue views.
- Vercel — it hosts the public build. As a platform it serves front-end builds from a global edge network with immutable, atomically promoted deployments and fast rollbacks, which suits a dashboard that must load quickly for staff and be safe to ship changes to during trading hours.