Skip to content

hospitality saas / solo build · live

updated

Reservation management app for a restaurant-tech provider.

A restaurant-tech provider needed an app for the people who run service: reservations, tables, walk-ins. I built it alone in five months, from the first screen to the release in the App Store and on Google Play. Today more than 100 restaurants use it.

Role
Sole developer
Duration
5 months to launch
Platforms
iOS and Android, phone and tablet
Stack
Flutter, Riverpod, existing Node.js backend, WebSockets
restaurants use the app
100+
months from the first screen to both stores
5
automated tests
~1,200
languages
6
Floor plan, schematic
Live sync, schematic
  1. 01 Drag & drop Someone drops a reservation on a table or moves it on the timeline. The app updates at once, with Undo.
  2. 02 Existing Node.js backend The change goes to the backend the provider already runs.
  3. 03 WebSocket The backend pushes the update to every connected device.
  4. 04 Every device Floor plan, timeline and board update everywhere. After a dropped connection, the app reconnects and re-fetches the day.

The brief

During service, restaurant staff need to see at a glance which tables are free, who arrives next and who is still waiting. The provider already ran a Node.js backend with the reservation data. What was missing was an app for the people on the floor.

The floor plan

The app is built around the floor plan: every room of the restaurant with its tables where they really stand, round or rectangular, one chair per seat. The color of a table shows the status of its reservation, and the colored chairs show how many guests sit there. A badge counts how long they have been seated and turns red once the stay runs over. A free table shows when its next booking arrives.

Reservations without a table wait in a list next to the plan. Staff press and hold a card and drag it onto a table. While they drag, the tables that are free for the whole booking and big enough for the party light up. If a table is too small or already booked, the app asks before assigning it anyway. On an occupied table it offers to swap the two parties or to seat both there. Guests move from table to table the same way, and a long press before dragging adds a second table for a larger party.

A time slider along the bottom looks ahead: set it to 20:00 and the plan shows the room as it will be then, so staff can prepare the evening in the morning. Tapping a reservation jumps to its arrival time. On phones the plan fills the screen and the list sits in a panel below it.

Two more views of the same evening

  • Timeline: the evening as a Gantt chart, tables down the side, time across, with a live “now” line. Drag a booking to another table or time, or double-tap an empty slot to add one.
  • Kanban board: every reservation is a card in one of four columns: waitlist, expected, seated, closed. Dragging a card sets its status.

Everything else a service needs

Walk-ins and a waitlist. A booking wizard with availability check and recurring bookings. A guest book with notes, dietary needs and a no-show warning. Approval of online requests, a calendar with daily figures, and a shift briefing as a PDF. Every change can be undone, and staff codes record who made it. The app speaks six languages, comes in light and dark themes, and has its own layouts for phones and tablets.

Keeping every device in sync

In a restaurant, several people work with the same reservations at the same time. If one device shows an old state, two parties can end up at the same table. So a change shows up at once on the device that made it, goes to the backend, and the backend pushes it over WebSockets to every other device. If the connection drops, the app reconnects on its own and re-fetches the day, so no update gets lost.

Works when the Wi-Fi doesn’t

The app keeps a local cache per restaurant and queues changes made offline. Once the connection is back, the queue goes out with retries, and every change carries an ID, so no booking is created twice.

Result

Five months after the first screen, the app was live in both stores. More than 100 restaurants use it today. About 1,200 automated tests run on every pull request, and releases go to TestFlight and Google Play through a Fastlane pipeline. No new backend was needed: the app works with the one the provider already runs.

For the same provider I also built a white-label app generator and a WhatsApp AI assistant.

Next project White-label app generator: client apps in hours instead of weeks

Tell me what
you need built.

Book a call

Or email hello@asisto.io

Prefer email to calls? No problem: everything works in writing, from the first message to the handover.

What happens next

  1. This week
    Intro call, or in writing
  2. Within 48 hours
    Written quote
  3. Usually within 2 weeks
    Kickoff
  4. At the end
    Handover and 30 days of support