Skip to main content
TableOrder Hero Light

What is TableOrder?

TableOrder is a full-stack mobile ordering system for restaurants, built with React Native and Expo. It operates in two distinct modes determined automatically by GPS:
  • Table mode — Customer is inside the restaurant. They scan a QR code at their table, browse a context-aware menu, and pay directly from their phone.
  • Delivery mode — Customer is outside the restaurant. They tap the restaurant on a live map, browse the full menu, and checkout with calculated shipping cost and real-time route tracking.
The app adapts its interface at every level: a bar table shows a drinks-only menu, a full dining table shows all categories, and a birthday table triggers a festive animation with an automatic discount.

Quick start

Get TableOrder running in under 5 minutes

Installation

Complete setup guide with prerequisites and environment configuration

Architecture

Learn about the feature-based structure and tech stack

API reference

Explore services, stores, and core utilities

Key features

GPS geofencing

Haversine-based context detection automatically switches between table and delivery modes

QR scanner

Idempotency-guarded camera scanner with branded overlay and haptic feedback

Contextual menus

Menu content filtered by table type (full menu vs. drinks only)

Birthday mode

Animated banner with automatic discount applied to cart total

Route tracking

Post-payment Mapbox map showing driving route, ETA, and distance

PDF receipts

Branded PDF tickets auto-generated after every successful payment

Telegram dispatch

PDF receipts sent silently to a Telegram chat via Bot API

Stripe payments

Full payment flow with card preview and failure states

Dark mode

Full dark-first design using the Expo Colors system

How it works

TableOrder uses GPS-based geofencing with a configurable radius (default: 50 meters) to determine whether a customer is dining in or ordering delivery.

Tech stack

TableOrder is built with modern React Native technologies:
LayerTechnology
FrameworkReact Native 0.83 + Expo SDK 55
NavigationExpo Router (file-based)
StateZustand 5
PaymentsStripe React Native SDK
Maps@rnmapbox/maps (Mapbox GL)
Locationexpo-location (GPS + geofencing)
Cameraexpo-camera
Animationsreact-native-reanimated 4
Notificationsexpo-notifications
PDFexpo-print
LanguageTypeScript (strict mode)

Use cases

Customer scans table QR code, orders without calling staff, and pays in seconds. Perfect for busy lunch rushes or self-service concepts.
Bar QR code shows drinks-only menu, automatically blocking food items. Keeps the interface focused and prevents ordering confusion.
Special table QR activates animated banner and 15% discount on the total. Creates a memorable experience for special occasions.
Customer outside the geofence taps the restaurant on a map, sees full menu, and gets real driving route and ETA after payment.
Every payment auto-generates a PDF and pushes it to a Telegram channel for back-office tracking. No manual receipt management needed.

App modes explained

TableOrder automatically switches between two modes based on your GPS location:

Scanner mode (in-restaurant)

When you’re within 50 meters of the restaurant:
  • QR scanner activates
  • Scan table code to see contextual menu
  • Menu adapts to table type (bar, dining, birthday)
  • Fast checkout without shipping costs

Delivery mode (remote)

When you’re farther than 50 meters:
  • Interactive map shows restaurant location
  • Browse full menu catalog
  • Shipping cost calculated per kilometer
  • Post-payment route tracking with ETA
The geofence radius is configurable in src/lib/core/config.ts. Adjust it based on your restaurant’s physical layout.

Next steps

Install TableOrder

Set up your development environment and configure API keys

Quick start guide

Get the app running and test both modes in under 5 minutes