📱 Mobile App
Six config-driven bottom tabs — a tab only renders if navigation.<tab> is true in remote config.
Tabs & key screens
| Tab | Key screens |
|---|---|
| Home | Balance (hide/show, currency dropdown), account-setup progress, quick actions, config-driven services grid. |
| Trade | Asset list + search, Asset Details, Buy/Sell (amount → review → confirm → status). |
| Wallet | Balance, Withdraw, filterable Transaction History, Transaction Details. |
| Giftcard | Brand grid, submission (country → value → photo upload → notes → review), status history. |
| Account | Profile, Edit Profile, KYC (personal info → document → selfie → review). |
| Settings | Bank accounts, transfer limit, security (biometrics), preferences, referral, support, delete account. |
Native capabilities
- Secure storage: expo-secure-store — tokens live only in Keychain/Keystore.
- Biometrics: expo-local-authentication, toggled in Settings → Security.
- Camera / gallery / files: gift-card capture, KYC documents, profile photo.
- Push notifications: Expo push token registered via
/notifications/register-token. - Deep links:
nairaexchange://transaction/:id,…/giftcard/:id,…/kyc,…/referral/:code.
Key env vars
| Variable | Purpose |
|---|---|
EXPO_PUBLIC_API_BASE_URL | Gateway base URL, per environment. |
EXPO_PUBLIC_USE_MOCKS | Mock vs. live API layer. |
EXPO_PUBLIC_APP_ENV | development · uat · production. |
EXPO_PUBLIC_GOOGLE_*_CLIENT_ID | OAuth client IDs for Google Sign-In (never a secret). |