Mobile
App

Fall alert delivery to nursing staff via APNS and FCM — Expo SDK 54 managed workflow with Cognito SRP auth and EAS Build distribution for the NIH STTR pilot at Mount Olivet Home.

ambientintel/ambient-device-mobile
Build pipeline
Environment
Development
Features
Distribution
Goal
Framework
Expo SDK 54
Managed workflow · React Native 0.81.5
Language
TypeScript 5.9
Strict mode · expo/tsconfig.base
Auth
AWS Cognito
Shared pool with ambient-ella-web · SRP auth
Push
APNS + FCM
iOS TestFlight · Android Firebase Dist.
Build
EAS Build
Cloud iOS + Android · eas.json profiles
Study
1R41AG097177-01
NIH STTR Phase I · NIA · Mount Olivet
STEP 01
Environment< 5 min
Complete

Repository Setup

Expo SDK 54 managed workflow, TypeScript 5.9 strict, pnpm. All screens implemented and type-checked clean. AppState session refresh, cold-start notification handler, expo-splash-screen, and stored-session push token re-registration added. iOS IPA ccc4f957 + Android APK 53f00c95 both built (2026-05-12). Remaining work: SNS GCM platform-app ARN wiring (lives in ambient-platform-infra) and pilot distribution.

Node 20+ required. pnpm is the package manager — consistent with ambient-ella-web. No monorepo structure: this is a flat single-app repo with a root package.json.

$ clone and install
git clone https://github.com/ambientintel/ambient-device-mobile.git
cd ambient-device-mobile
pnpm install
$ verify Expo CLI
npx expo --version
# → 54.x.x
PathContents
App.tsxRoot component — navigation, APNS handler, Android channel, deep-link
index.tsExpo entry point — registerRootComponent
app.jsonExpo config — name: Ella, bundle: com.ambientintel.ellamemory
eas.jsonEAS Build profiles — development / preview / production + TestFlight submit
src/auth/cognito.tsCognito SRP signIn, signOut, refreshSession
src/auth/store.tsSecureStore session persistence + auto-refresh on expiry
src/api/client.tsREST client with Bearer auth + assertNoPhi() PHI boundary guard
src/notifications/register.tsregisterPushToken() / unregisterPushToken() — APNS + FCM
src/screens/LoginScreen.tsxEmail + password login, stored session check, push token registration
src/screens/AlertListScreen.tsxFlatList of active alerts, 30 s poll fallback, pull-to-refresh
src/screens/AlertDetailScreen.tsxAlert detail, acknowledge (PATCH), false-positive flag (PATCH)
.github/workflows/mobile-ci.ymlCI — typecheck on PRs, EAS preview build on main
docs/deidentification.mdPHI handling policy — what reaches the device and what never does
.env.exampleEXPO_PUBLIC_API_BASE_URL, Cognito pool + client ID
assets/App icons, splash screen, adaptive icon
RepoRole
ambientintel/ambient-platform-infraAWS backend — Cognito user pool, IoT Core, FastAPI
ambientintel/ambient-ella-webNurse dashboard (Next.js) — name-hydrated views
ambientintel/ambient-device-fwTI AM62x + IWR6843AOP device firmware
Deploy Checklist
Complete74%
Open Decisions
1Offline alert queue: cache unacknowledged alerts in AsyncStorage when connectivity drops in the care facility
2Biometric unlock: Face ID / fingerprint for faster re-auth after session expiry vs. Cognito password re-entry
3Alert sound: custom urgent clinical tone vs. iOS/Android system notification sounds
4Android MDM: Firebase App Distribution (Phase I) vs. hospital-managed MDM for Phase II scale
5Phase II identity overlay: encrypted on-device keyring parity with ambient-ella-web — requires IRB amendment