Case study 02
One mobile app for every on-prem site
An Expo / React Native app that finds the user's site on its own, picks the local or public server automatically and delivers push alerts, so a single build serves a whole fleet.
- build for every site
- 1
- build for every site
- Expo / React Native apps
- 7
- Expo / React Native apps
- mobile commits
- ~170
- mobile commits
Problem
The ERP in case 5 runs on its own server at each site. Staff wanted it on their phones, but a separate app per site would never be maintained, and the right server address changes with whether the phone is on the site's network.
Constraints
- One build, every site: no per-site configuration in the app.
- Phones move between the site LAN and mobile data; the app has to follow.
- Alerts must arrive even when the app is in the background.
- Reuse the existing web UI instead of rewriting the ERP for mobile.
What I built and led
- Relay login: the user signs in once, and a relay tells the app which site they belong to and where its server lives.
- Local-versus-public server detection with NetInfo, re-checked when the network changes.
- A WebView host for the ERP's web UI, native push (Pusher + expo-notifications) and background tasks.
- The same detection and notification pattern in an Electron desktop wrapper for the site PCs.
- Beyond this app: telehealth patient and provider apps (Expo Router, NativeWind, LiveKit video consults, i18n, secure storage, maps and calendars) and LinkVault, a public offline-first bookmark manager (expo-sqlite, share intent, FlashList, Reanimated, Jest + RNTL).
Architecture
Impact
- One APK for every site instead of one build per site
- 50 of the app's 54 commits, Sep 2025 to Aug 2026
- Telehealth patient and provider apps with WebRTC video consults: 27 + 22 commits, Apr to Aug 2026
- LinkVault (public): 37 of 39 commits, offline-first on SQLite with a Jest + RNTL test suite
Commit counts from GitHub, October 2026.
Transfers to: Field and frontline apps for multi-tenant or on-prem software: retail, logistics, franchises, any product deployed per customer.
Stack
- Expo
- React Native
- Expo Router
- NativeWind
- expo-notifications
- Pusher
- NetInfo
- react-native-webview
- expo-sqlite
- LiveKit (WebRTC)
- i18next
- Electron