Mobile apps
:::info Planned and in progress
The mobile apps are not on the main branch. A first slice exists on the mobile-app branch. This page summarises the plan and what that branch holds when last read (2026-11-07). It is not a description of a released product.
:::
Specification
The requirements, design and task list are in .kiro/specs/responsive-and-mobile-apps/. The work is phased:
- Responsive web for phones and tablets, first.
- Installable web (optional, deferred): only if the store app is declined or low-storage phones need it.
- App pilot: a native app for Founders and Mentors.
- Public release and later items.
Staff roles (Coordinator, CM Office, Administrator) use responsive web, not the app.
App architecture (design)
| Concern | Choice |
|---|---|
| Framework | React Native on Expo SDK 57. Development builds, not Expo Go. See ADR 10. |
| Navigation | expo-router. |
| Video | expo-video (ExoPlayer on Android, AVPlayer on iOS). Range requests are handled natively. |
| Live classes | The LiveKit React Native SDK. |
| Secure storage | expo-secure-store (Android Keystore, iOS Keychain). |
| Sign-in | OIDC authorization code with PKCE through the system browser. This needs a publicly reachable Keycloak, which is a gated project that has not been approved. |
| Push | FCM and APNs, sent from the notification service. |
| Languages | English first, with the app built so Telugu can be added. |
| Offline | Graceful behaviour in the first release. |
What the mobile-app branch holds
- A scaffold under
mobile/with theme, i18n and navigation. - A demo sign-in profile for closed builds. It uses the same
POST /api/auth/tokenroute as the web app, and keeps the refresh cookie in secure storage. The pilot and production profiles have no sign-in method yet. - Founder screens: Home, Courses (with lesson and recording playback through the stream-token endpoints), Live (upcoming classes and recordings) and Certificates.
- Android only, checked on an emulator. iOS is not built.
- Two hosts:
https://rtih.peoplewave.infor the auth routes andhttps://api.rtih.peoplewave.infor/api/v1. - Live-class join and push are out of this slice.
Which spec tasks are complete is tracked in the task file on that branch. On main the task file still shows them as open.
What the apps need from the platform
- A public Keycloak OIDC client with Authorization Code and PKCE, redirect URIs for the app's scheme, and refresh token rotation. Mobile apps cannot keep a secret.
- A reachable HTTPS issuer URL that matches the issuer in tokens. Today Keycloak is in-cluster only.
- Per-person accounts before any public store release.
Sources: .kiro/specs/responsive-and-mobile-apps/{requirements,design}.md, .agents/tasks/mobile-app/{plan,decisions}.md, git history of the mobile-app branch.