Skip to main content

Mobile app

Orkestra ships a Flutter cross-platform mobile client under mobile/. This page is for Tier-1 operators forking Orkestra — i.e. you've forked the monorepo, you want the mobile app to talk to your backend (not orkestra.cc's). For end-user docs, the app's in-product help / your published support docs are the right surface.

:::caution Early stage The mobile app currently boots, picks an environment, and renders the active backend URL. Real product surfaces are in active development. Release builds today sign with the debug keystore — fine for CI artifacts, never ship to users without a real signing config. :::

Platform support

PlatformScaffoldedBuilds in CI
Androidflutter build apk
iOS
Web
macOS / Linux / Windows desktop

Adding a platform is a one-liner:

cd mobile
flutter create --platforms=ios . # or web, macos, linux, windows
git add ios/ # commit the scaffold

How forkers point the app at their backend

The app picks one of three EnvironmentConfig constants at build time, depending on which entry point you launch:

Entry pointDefault API URLWhen to use
lib/main_development.darthttp://localhost:3000Local backend
lib/main_staging.darthttps://staging-api.orkestra.ccPre-prod environment
lib/main_production.darthttps://api.orkestra.ccReal users

The constants use String.fromEnvironment('ORKESTRA_API_URL', defaultValue: ...) so forkers can override via --dart-define at build/run time without editing source.

Per-device hostname cheatsheet:

DeviceAPI hostname to use
iOS simulatorhttp://localhost:3000 (default — no override needed)
Android emulatorhttp://10.0.2.2:3000 (the emulator's host loopback)
Physical device on LANhttp://<host-machine-IP>:3000

The recommended pattern is --dart-define-from-file:

cd mobile
cp dart_define/example.json dart_define/dev.json
# Edit dart_define/dev.json with your URLs
flutter run -t lib/main_development.dart --dart-define-from-file=dart_define/dev.json

dart_define/*.json (except example.json) is gitignored — these files typically contain operator-specific URLs and, as the mobile app's surface grows, API keys.

The home screen of the running app displays the active environment + API URL + debug flag, so you can verify the override is taking effect.

Available --dart-define keys

KeyDefaultPurpose
ORKESTRA_API_URLper-env, see aboveBackend HTTP base URL
ORKESTRA_WS_URLper-env (mirror of API with ws: / wss:)Backend WebSocket base URL

OAuth client IDs / Stripe publishable keys are not yet wired into the mobile app — the SDK dependencies aren't in pubspec.yaml yet. As features land, new dart-define keys will be added.

Deploying to your store

This page intentionally does not cover store-deploy procedure. Play Store + App Store onboarding is its own discipline and changes too often for a docs page to track. Start here:

Before your first store submission you'll need at minimum:

  • A real Android signing keystore (NOT the debug keystore).
  • An iOS scaffold + an Apple Developer account.
  • App icons, splash screens, store listings.

See also