01
Discover the menu
- Search across dish names and ingredients.
- Filter vegetarian or vegan; hide dishes with chosen allergens.
- Open a dish for ingredients and illustrative allergen information; deep links open dishes directly.



React Native · Expo SDK 57 · TypeScript
Menu search and allergen filters, dish options that enforce their own rules, a docket that adds up in whole cents, and pickup slots that know the kitchen's hours, time zone and capacity. Orders are saved on the phone as clearly labelled local demo orders until you connect your own POS.


Screens
Captured with automated Maestro flows from release builds. Switch platform to compare.






























Three customer journeys
01



02



03



Install
The app is a native Expo project built with expo run; it does not run in Expo Go or in a browser.
src/config/brand.json — name, scheme, bundle IDs, colourssrc/config/restaurant.ts — time zone, hours, pickup rules, taxsrc/data/menu.ts — dishes, modifiers, allergensassets/brand/ — icon and splash (SVG sources included)cd mealvoro/mobile
npm ci
npm run check # types, lint, 77 tests
npx expo run:ios # iOS Simulator
npx expo run:android # Android emulator
# release-like builds
npx expo run:ios --configuration Release
npx expo run:android --variant release
# optional end-to-end journeys
maestro test e2e/
Honest scope
Verification
Simulator and emulator results are not physical-device results; both are listed separately.
| Check | Environment | Result |
|---|---|---|
| TypeScript, ESLint, 77 Jest unit and journey tests | Extracted buyer package, Node 24.21 | Passed |
| Expo Doctor (SDK 57 dependency set) | Extracted buyer package | 21/21 passed |
| iOS Release build and 3 Maestro journeys | iPhone 17 simulator, iOS 26.5, Xcode 27 | 3/3 passed |
| Light, dark and largest-accessibility-text captures; reduced-motion pickup journey | iPhone 17 simulator | 16/16 captures, passed |
| Android release APK and 3 Maestro journeys | Android 16 emulator (API 36) | 3/3 passed |
| Light, dark and 2× font captures; reduced-motion pickup journey | Android 16 emulator (API 36) | 15/15 captures, passed |
| Signed Release build for a physical iPhone | iPhone 14 Plus, iOS 26.6.2 | Built and code-signed |
| Journeys on physical phones | iPhone 14 Plus, Galaxy A24 | Pending: phones must be connected and unlocked |