The complete source code of a restaurant ordering platform for iOS and Android: a guest app, a queue for every person on the restaurant team, a full manager's console, and its own API with real sign-in, real payments and a real database.
It runs on your computer in about 30 minutes, with no cloud setup: the ZIP includes a step-by-step setup guide, demo data and a test account for every role.
WHAT THE APP DOES
The guest
• Sign in with email and password, Sign in with Apple or Google, with email verification and password reset
• Home, menu search and filters, dish customisation, saved dishes, the cart with promo codes
• Checkout with Stripe (card, Apple Pay, Google Pay) or cash on delivery; saved cards follow the account
• Live order tracking with the courier's name, then rate and tip
• Table bookings, Fig Club rewards, inbox, addresses, card wallet, help, the journal and dark mode
The team (one app, a queue per role)
• Front of house calls the guest, fixes the address and confirms
• The kitchen cooks and ticks each item into the bag, with timers that turn amber, then red
• Dispatch hands each order to the least busy courier
• The courier picks it up, delivers it and collects cash
• Every move is stamped on the order's timeline
The manager's console
• Tonight's dashboard, the order board, refunds on cancel, the kitchen display
• Menu editor with photo uploads, sold out, categories and kitchens
• Home layout, banners, deal of the day, the journal and promo codes
• Bookings, reviews, customers, Users & roles, and store settings
UNDER THE HOOD
• One shared contract (Zod) for the app and the API, so both always agree on a total
• The server prices every order from the live menu, in one Firestore transaction, with safe retries
• Stripe PaymentIntents and webhooks; refunds when an order is cancelled
• The menu is cached on the phone, revalidated with an ETag, and works offline
• Firestore rules deny every client: only the API reads and writes the data
• Role-based access in the API, OpenAPI docs at /docs, rate limits
• Tests: Vitest unit and API integration tests against the Firebase emulators, Jest for the app
THE STACK
App: Expo SDK 58, React Native 0.88, React 19 with the React Compiler, Expo Router, Reanimated 4, Zustand 5, TypeScript (strict)
API: Node 22, Fastify 5, Zod, Firebase Admin, Stripe, ImageKit
Data and sign-in: Firebase Authentication and Firestore, with local emulators for development
About 50 screens, 57 API endpoints and 24,000 lines of TypeScript
WHAT'S IN THE ZIP
• full-stack/: the app, the API and the shared contract (npm workspaces)
• README.md: what's inside, the features and a quick start
• SETUP-GUIDE.md: from a fresh computer to the app running, then to the App Store and Google Play, with a troubleshooting table
• LICENSE.md and CHANGELOG.md
• Bonus: course-edition/, the same app on local data (the one the free YouTube course builds)
• Bonus: design/, the original interactive design prototype
WHAT YOU NEED
• Node 22 or newer and Java 21 (for the Firebase emulators)
• A Mac with Xcode for the iOS simulator, or Android Studio on macOS, Windows or Linux
• A free Stripe account (test mode) for card payments
• An ImageKit account only if you want photo uploads
• To go live: your own Firebase project, an Apple Developer and a Google Play account, and any Node host
LICENSE
One developer. Build and ship your own apps from it, for yourself or for clients. You may not resell or share the source code itself. Full terms are in LICENSE.md.
SUPPORT
Stuck? The setup guide's Troubleshooting section covers the common first-run problems. If it doesn't help, email
[email protected] with what you ran and what you saw.