Mobile App Development for Restaurant Table Booking
Restaurant table booking is a task with time slots, capacity, deposits, and cancellation rules. Looks simpler than delivery at first glance. In reality — several non-trivial technical nodes determining whether the system works or frustrates.
Data Model for Reservations
Common design mistake: store reservations as simple rows with datetime. Works until first "4-seat table partially occupied" or "guest wants corner or bar seat".
Correct model: Table (number, capacity, zone, features) → Reservation (table, datetime start, datetime end, guests count, status, deposit status) → Guest (profile, visit history, preferences).
Availability check: when selecting date and guest count, backend returns available time slots. Server checks: no time overlaps (accounting for average table turnover — configurable parameter, e.g., 90 minutes), tables of needed capacity exist. Server logic, not client — prevents race conditions on simultaneous bookings.
Deposit and Cancellation Policy
Restaurant wants insurance against no-shows. Deposit on booking via YooKassa — card amount hold (method hold), charge on visit confirmation or refund on cancellation within set timeframe. Not authorization, not full payment — exactly hold, which YooKassa supports.
Cancellation policy: free within 24 hours, 50% deposit within 4 hours, 100% on no-show. Backend logic — Laravel scheduled jobs check reservations for hour-before deadlines.
Notifications
Push via FCM: booking confirmation immediately, reminders 24 hours and 2 hours before. If restaurant manually approves bookings (not auto) — "Table confirmed" push after manager approval.
SMS via SMSCenter as backup channel — not everyone enables push.
Admin Panel
Manager sees floor plan for today with occupied/free table visualization, can modify booking, add notes ("nut allergy", "birthday"), mark no-show. Web interface on React — more convenient for desktop in restaurant.
Stack
Flutter 3.x (client app), Laravel 10 + PostgreSQL, FCM, YooKassa with hold-payments, React for restaurant panel.
App with booking, deposits, notifications, and admin panel — 12 to 16 weeks. Pricing is calculated individually after requirements analysis.







