A demo restaurant stack inspired by The Restaurant at the End of the Universe: iOS (SwiftUI under ios/), Android (Kotlin under android/), and a shared Node backend. Designed for mobile automation demos.
| Path | Contents |
|---|---|
backend/ |
Node demo API and Docker image |
ios/ |
Xcode project, app sources, and Makefile |
android/ |
Kotlin + Compose app (:app), same flows as iOS |
plans/ |
Markdown test plans (stories, scenarios, knowledge) |
This project serves as a testing environment for:
The app features a food ordering flow with a space-themed menu, shopping cart, delivery tracking, and user account — providing various UI elements and scenarios for testing mobile automation capabilities.
You can view Mobilewright test report of the last build.
This application contains intentionally placed bugs for testing purposes.
- Clone the repository
- Start the demo backend with Docker:
docker compose up --build -d
- Open
ios/Milliways.xcodeprojin Xcode - Build and run on iOS Simulator or real device
The local API is exposed at http://localhost:3001 and the Postgres database is exposed at localhost:5432. The iOS Simulator can reach the API through localhost; a physical device needs the Mac's LAN IP instead.
The backend is intentionally simple for demo and testing purposes. It stores email/password credentials directly in Postgres, seeds the menu on startup, persists orders, and exposes order status checks.
Backend smoke test:
cd backend
npm run smokeRun these from the ios/ directory (or pass -C ios from the repo root):
cd ios
make build # Build for simulator
make run # Build, install, and launch on iPhone 17 Pro simulator
make ipa # Build unsigned IPA
make clean # Clean build artifactsFrom repo root: make -C ios build, etc.
See android/README.md. Open the android/ folder in Android Studio, create android/local.properties with your SDK path, start the backend (docker compose up from repo root), then run on an emulator (API uses 10.0.2.2:3001 by default).
Join our Slack, let's talk.
