Design a Mobile Restaurant Reservation App

Restaurant reservation apps (OpenTable, Resy, Tock) are surprisingly rich system design topics. Inventory management at sub-hour granularity, time-zone awareness, no-show economics, dynamic availability — the interview tests whether you understand these tradeoffs.

Functional requirements

  • Search restaurants by name, cuisine, location
  • See availability for date and party size
  • Book a reservation
  • Modify or cancel
  • Notifications (confirmation, reminder)
  • Loyalty points / dining rewards

Architecture

Three modules: search, availability, booking.

Restaurant inventory

Each restaurant has:

  • Tables of various sizes
  • Service hours by day of week
  • Time slots (typically 15–30 min granularity)
  • Holds for VIPs / walk-ins / wait list

Availability calculation: for date + party size, find tables that fit + are unbooked for the requested time + buffer for turnover.

Geographic + filter:

  • By cuisine, neighborhood, price tier
  • Sort by rating, distance, availability
  • Hidden ranking by partnership status, booking conversion

Search backend: ElasticSearch or equivalent.

Booking flow

  1. User selects restaurant, date, time, party size
  2. Client requests availability
  3. Server holds the slot for ~10 minutes while user confirms
  4. User confirms; server commits booking
  5. Confirmation email + push notification sent

Holds and concurrency

Two users want the same table at the same time. Solutions:

  • Optimistic: first to commit wins; second sees “no longer available”
  • Pessimistic: temporary hold while user is in checkout flow

Most apps use optimistic with short cache TTL on availability.

Cancellation policies

Different restaurants have different rules:

  • Free cancellation up to N hours
  • Cancellation fee within window
  • Credit card hold for high-demand bookings
  • No-show fee charged automatically

Surface clearly at booking time.

Time zones

The reservation is in the restaurant’s time zone. User booking from another time zone (travel) sees:

  • Local time of the restaurant primarily
  • Optional “your time” reference

Don’t book “8pm” without time zone — the restaurant team will be confused.

Notifications

  • Confirmation immediately on booking
  • Reminder 24h before
  • Reminder 2h before
  • Day-of update if anything changes (closure, time shift)

Loyalty programs

Dining points awarded per booking. Surface in the app:

  • Points balance
  • Rewards redemption
  • Status tier (Gold, Platinum)

Walking-in support

Some apps support walk-in queues (Yelp, Resy). User adds to a queue; gets notified when their turn approaches.

Frequently Asked Questions

How does OpenTable handle restaurants without internet at the host stand?

Each restaurant has a host station with local software. Sync to cloud asynchronously. Reservations can be created at either side; merge on sync.

What about same-day bookings?

Some restaurants accept; some only same-week. Configurable per restaurant.

How is no-show fee enforced?

Card-on-file with a hold; charged on no-show. Disputes handled by the booking platform.

Scroll to Top