This monorepo hosts the production mobile app, the optimization testbed, a shared localization/ble package, and the custom Expo module for KBeaconPro scanning.
- Apps
- apps/mobile – production client
- apps/testbed – various feature testing applications
- Shared logic: packages/shared
- Native module: modules/expo-kbeaconpro
- Swift LSP stubs for linting: Package.swift and Sources
npm ci
npm run start:mobile # metro/devclient for production app
npm run start:testbed # metro/devclient for testbed- Lint all workspaces:
npm run lint - Type-check all workspaces:
npm run type-check - Jest (skips empty suites):
npm run test - Type-check, lint, test, and run expo-doctor all workspaces:
npm run precommit-check
- test.yml – install once, run expo-doctor on both apps, then lint/type-check/test across workspaces
- test+build+deploy.yml – same tests, plus optional Android builds via EAS for a chosen app (
target_appinput)
SwiftLint/SourceKit on non-macOS relies on Sources and Package.swift for dummy CoreBluetooth/ExpoModulesCore/kbeaconlib2 APIs. Keep these paths intact; they are not used in production builds.
- Workspaces are hoisted; shared code is consumed via
@eight2five/sharedand the Expo module viaexpo-kbeaconprofile links. - Assets are referenced relative to each app config in
assets/.