- Node.js LTS (CI uses the latest LTS).
- pnpm (pinned to
pnpm@11.10.0inpackage.json). - For native runs: Xcode for iOS, Android SDK/adb for Android. Native projects are not checked into the repo (
ios//android/are gitignored) — they're generated on demand.
pnpm install- Dev server with QR/Simulator options:
pnpm start
- iOS simulator (runs
expo prebuildfirst ifios/doesn't exist yet):pnpm ios
- Android emulator/device (same, generates
android/first if needed):pnpm android
- Web:
pnpm web
There are no environment variables to configure — the app has no runtime environment-variable overrides (see Configuration). Programme data, the API base URL, and Wi-Fi info URL are all static values in src/config/conference.ts.
pnpm build:webRuns expo export -p web then generates the Workbox service worker (public/workbox-config.js → dist/sw.js). To preview the exported build locally:
pnpm pwa(builds web, then serves dist/ on port 8081 via serve).
pnpm ios / pnpm android run against locally-generated ios//android/ projects (Expo's Continuous Native Generation / prebuild workflow — these folders are gitignored, not committed). If you only need JS/UI changes, pnpm start is usually enough; you don't need a native build unless you're changing native config (app.config.js plugins, permissions, icons) or adding a library with native code.
expo-dev-client is installed, so pnpm ios/pnpm android build a custom dev client (not plain Expo Go) and pnpm start connects to it automatically — no extra flags needed. This matters because the app uses native modules (e.g. expo-calendar, react-native-worklets) that plain Expo Go doesn't support. EAS's development build profile (eas.json) also sets developmentClient: true for building a shareable internal dev client via eas build --profile development.
- Format code and docs with:
pnpm format
- Verify formatting without changes:
pnpm format:check
- Run the repo check used in CI:
pnpm typecheck
- For feature work and navigation changes, start with docs/development-workflow.md.
- For a full architecture walkthrough, see docs/architecture.md.
pnpm: command not foundor wrong pnpm version: install pnpm (corepack enableor seepackage.json'spackageManagerfield) and retry.- iOS build fails immediately: Xcode or the CLI tools are missing or out of date, or
ios/needs to be regenerated (expo prebuild --clean). - Android build fails with missing SDK/adb: Android Studio/SDK not installed or
ANDROID_HOMEnot set. - App launches but shows empty data: initial fetch requires network access; verify connectivity and try Refresh in Settings. Once any data has loaded once, it's cached and the app works offline from then on.