Skip to main content
LinkTech Solutions
Restaurants & HospitalityCustom Software Development

From Phone-and-Paper to Pick-Your-Table: A Custom Event Booking System for a Glendale Restaurant

Phoenicia Restaurant sells out live-entertainment nights where guests reserve specific tables — and every reservation ran through the phone. We rebuilt their web presence in three phases, ending with a visual booking system where guests see the actual floor plan, tap an open table, and pay upfront through Stripe.

Prepaid
every online table reservation collected in full via Stripe at booking
0
double-bookings possible — table holds enforced by the database, not memory
~2 min
for staff to publish a new event with poster — no developer needed
1 click
to clone a previous event's floor plan for the next show

The Challenge

Phoenicia is an established Lebanese restaurant and banquet venue in Glendale with two banquet halls, a patio lounge, and regular ticketed entertainment nights where guests don't buy generic tickets — they reserve specific tables in the room. Every one of those reservations was handled by phone: staff described the floor layout verbally ("the table near the stage… no, that one's taken"), tracked availability on paper and memory, and took payment in person or not at all. That meant hours of staff phone time per event, a real risk of double-booking the same table, and no-shows costing revenue on sold-out nights. Meanwhile, their outdated website didn't reflect the venue, couldn't be updated by staff, and gave no way to promote events or take a reservation online.

Our Solution

We rebuilt their entire web presence in three phases, each one usable on its own. Phase one: a fast, ADA-compliant marketing site in the venue's dark-and-gold brand — full menu, banquet halls with a private-events inquiry funnel, Toast online ordering, and local SEO structured data. Phase two: a self-serve events CMS, so staff publish an entertainment night with a poster in about two minutes, with drafts, one-click publish, and automatic archiving of past events — no developer involved. Phase three, the flagship: a custom table-booking system. Admins design each event's actual floor plan in a drag-and-drop editor — tables, stage, dance floor, per-table pricing — or clone last event's layout in one click. Guests see that same floor plan on the event page, tap an open table, and pay the full table price through Stripe Checkout. Holds, confirmations, and refunds are all automatic.

What We Delivered

Custom website design and development — ADA/WCAG 2.1 AA compliant
Self-serve events CMS with drag-and-drop poster uploads
Drag-and-drop visual floor-plan editor with per-table pricing
Interactive pick-your-table booking map, scaled for mobile
Stripe Checkout integration with webhook-verified payment confirmation
Database-enforced 5-minute table holds — double-booking impossible
Automatic confirmation emails to guest and venue
Private-events inquiry funnel and Toast online ordering integration

Inside the Booking System

The custom build that replaced phone-and-paper reservations

What guests see

  1. The event page shows the actual floor plan for that night, scaled to fit their phone — available tables tappable, booked tables grayed out and marked “Reserved.”
  2. Tapping a table shows the label, seat count, and price, with a Reserve & Pay button.
  3. Name and phone number, then straight to Stripe Checkout to pay the full table price by card.
  4. Payment confirms instantly: the table flips to Reserved on the live map, and confirmation emails go to both the guest and the restaurant — table number included.

What the venue controls

  • A drag-and-drop floor-plan editor: round and rectangular tables, the stage, dance floor, bar, and DJ booth — dragged, resized, and rotated on a canvas.
  • Per-table pricing set per event — change a price in the editor and the very next checkout uses it.
  • One-click cloning of a previous event's layout — recurring formats set up in minutes, not an hour.
  • Phone reservations and comps still work: any table can be manually booked with a name from the dashboard.
  • One-click refunds that automatically reopen the table on the public map.

The engineering underneath

  • Server-side pricing. The checkout amount is read from the database at booking time — never trusted from the browser.
  • Atomic 5-minute holds. Starting checkout places a database-enforced hold on the table, so two guests can't pay for the same seat. Unfinished checkouts expire and the table frees itself.
  • Self-healing edge cases. If a stale payment lands on a table that's since been taken, it's refunded automatically.
  • Webhook-verified confirmations. Bookings are marked paid only by Stripe's signature-verified webhook — not by the browser redirect.
  • Locked-down data. Row-level security keeps floor plans publicly readable only for live events, with writes restricted to authenticated admins; the booking map ships with an accessible list fallback for screen readers.

Built with

Next.js (App Router)React + TypeScriptTailwind CSSKonva canvas editorSupabase Postgres + Auth + StorageStripe Checkout + webhooksResend transactional email
TopicsCustom SoftwareBooking SystemStripe PaymentsRestaurants

Have a similar challenge?

Schedule a free consultation and let's talk about what we can build for your business.