straitPay Mobile
Secure multi-currency wallet and payments app for onboarding, funding, transfers, swaps, KYC, and transaction management.
My role
Mobile engineer working across authentication, wallets, transfers, funding, beneficiaries, transactions, support, notifications, verification, API services, and production reliability.
Overview
straitPay is a production mobile fintech app for multi-currency wallet operations, account onboarding, wallet funding, wallet-to-wallet transfers, wallet-to-bank withdrawals, wallet swaps, transaction history, notifications, customer support, and KYC/KYB verification.
Project Details
I worked on straitPay, a mobile fintech application focused on secure wallet and payment workflows for individuals and businesses. The app supports account discovery, personal and business signup, phone/email verification, PIN setup, biometric login, KYC/KYB, multi-currency wallets, wallet funding, transfers to wallets and bank accounts, wallet swaps, transaction history, notifications, and customer support.
Architecturally, the app is built with Expo Router for public/protected route groups, React Query for server state, Zustand for multi-step transaction state, and a shared Axios client for backend communication. Sensitive session data is stored in Expo SecureStore, while financial actions are protected by transaction PIN validation.
Production concerns are addressed through token refresh queuing, network reachability checks, centralized API error mapping, Socket.IO lifecycle management, OneSignal push notifications, Sentry monitoring, EAS build profiles, and OTA update support. One technically challenging area is the KYC selfie flow, which uses Vision Camera frame processors and face detection to validate face position, pose, and stability before auto-capturing and uploading a selfie for identity verification.
Key Features
Onboarding/Auth
- Account lookup, personal/business signup, phone/email verification, PIN setup/login, forgot PIN, OTP validation, and biometric login.
- SecureStore sessions, React Query mutations, Zustand public/common stores, OneSignal user login, and Sentry user context.
Wallets and Funding
- Fetch, add, delete, and view wallet balances with hide/show balance preferences.
- Wallet funding flow with currency selection, amount, payment method, fee preview, verification gate, and funding instructions.
Send, Swap, and Beneficiaries
- Wallet beneficiaries, bank beneficiaries, FX/rate preview, fee preview, beneficiary selection, PIN confirmation, and transfer execution.
- Multi-wallet currency swaps with PIN confirmation and cache invalidation.
- Paginated beneficiaries and transaction recipients with debounced validation.
KYC/KYB and Support
- Business verification, Nigeria identity verification, international KYC session, and selfie capture with face detection.
- Customer support categories/request, account details, profile/business logo upload, terms, and PIN reset/update.
Technical Highlights
- Expo Router route groups for public/protected navigation.
- SecureStore sessions, PIN login, biometric login, OTP, and refresh token handling.
- React Query useQuery, useMutation, and useInfiniteQuery with invalidation after financial mutations.
- Central Axios instance with network preflight, auth headers, app version headers, refresh-token queue, Sentry capture, and normalized errors.
- Socket lifecycle with token reconnection, OneSignal push registration, and notification inbox flows.
- Receipt PDF generation, infinite transaction lists, spending insights, and debounced beneficiary validation.
Tech Stack
- Expo
- React Native
- TypeScript
- Expo Router
- React Query
- Zustand
- Axios
- Zod
- React Hook Form
- NativeWind
- Socket.IO
- OneSignal
- Sentry
- Vision Camera
- Expo SecureStore
- Expo Network
- Expo Print
- Expo FileSystem
- i18next
- EAS
Architecture
Frontend architecture uses Expo, React Native, TypeScript, Expo Router file-based routing, React Query for server state, Zustand for local flow state, SecureStore for session/onboarding, and a central Axios API layer. Public and protected route groups are gated by onboarding completion and authenticated user state, with query invalidation after wallet, send, swap, beneficiary, notification, and verification mutations.
Challenges and Solutions
Secure session handling and financial mutation consistency.
Solution: Used SecureStore, PIN validation, biometric login, route-group auth guards, token refresh queuing, and cache invalidation after wallet and transaction mutations.
KYC camera quality gates.
Solution: Built a Vision Camera selfie flow with face detection checks for position, pose, stability, and auto-capture.
User-friendly provider/API failure handling.
Solution: Centralized error mapping into modal and sheet flows for network, auth, restricted account, app version, duplicate account, provider, validation, and KYC mismatch cases.
Impact
- Reduced duplicated API handling by centralizing auth headers, token refresh, network checks, and error normalization in a shared Axios client.
- Improved financial data consistency by invalidating wallet, transaction, and spending queries after send, swap, wallet, and beneficiary mutations.
- Improved development velocity through reusable typed services, feature hooks, form controls, and route-group navigation patterns.
Tags
- Expo
- React Native
- Fintech
- Wallet App
- Payments
- KYC
- Biometric Auth
- SecureStore
- OneSignal
- Sentry
- EAS