WELIFE Docs Swagger Admin Web

Mobile architecture — WELIFE Consumer

Path: mobile/ · Expo SDK 54 · WP-REPOSITORY-ARCH-ENV-AUDIT-01

Stack

Layer Choice
Framework Expo managed (SDK 54) · RN 0.81 · React 19
Navigation React Navigation (native-stack + bottom-tabs) — not Expo Router
State React Context (AuthContext) · no Redux/Zustand/React Query
Tokens expo-secure-store (services/secure-token.ts)
Flags AsyncStorage (onboarding only)
HTTP Single services/api.ts (fetch + refresh-on-401)
Public env src/config/env.ts → EXPO_PUBLIC_*
Theme src/theme/tokens.ts
Realtime Socket.IO client → API /socket.io namespaces /chat, /rides

Layout

mobile/
  app.json · babel · metro · eas.json
  .env.example
  src/
    config/env.ts
    navigation/          RootNavigator · MainTabs · MapStack · types
    features/<domain>/   screens · components · hooks (36 domains)
    services/api.ts      AuthApi + domain APIs
    services/secure-token.ts
    theme/tokens.ts
    shared/ui/
  GoogleService-Info.plist · google-services.json  (gitignored; not Web OAuth)

Features (domains)

auth · home · places · geo · routing · rides · fnb · grocery · hotels · rentals · parking · fuel · atm · charging · transit · homeservices · delivery · pharmacy · medical · schools · wallet · payments · bills · qr · chat · social · notifications · favorites · assistant · profile · kyc · promotions · reviews · support · addresses · health

Auth

Native static config

Item Value
scheme welife
package / bundle cloud.minhtien.welife
EAS eas.json present · cloud build OWNER
Firebase JSON/plist local gitignored · empty oauth_client · not OAuth Web Client ID

Tests / device

Known gaps (no large move this WP)