
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.
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:| Layer | Technology |
|---|---|
| Framework | React Native 0.83 + Expo SDK 55 |
| Navigation | Expo Router (file-based) |
| State | Zustand 5 |
| Payments | Stripe React Native SDK |
| Maps | @rnmapbox/maps (Mapbox GL) |
| Location | expo-location (GPS + geofencing) |
| Camera | expo-camera |
| Animations | react-native-reanimated 4 |
| Notifications | expo-notifications |
| expo-print | |
| Language | TypeScript (strict mode) |
Use cases
Quick-service restaurant
Quick-service restaurant
Customer scans table QR code, orders without calling staff, and pays in seconds. Perfect for busy lunch rushes or self-service concepts.
Bar or lounge
Bar or lounge
Bar QR code shows drinks-only menu, automatically blocking food items. Keeps the interface focused and prevents ordering confusion.
Birthday celebration
Birthday celebration
Special table QR activates animated banner and 15% discount on the total. Creates a memorable experience for special occasions.
Restaurant with delivery
Restaurant with delivery
Customer outside the geofence taps the restaurant on a map, sees full menu, and gets real driving route and ETA after payment.
Operator receipts
Operator receipts
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
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
