# WellNuo - Caregiving App WellNuo is a React Native/Expo app for monitoring and caring for loved ones (beneficiaries). ## Tech Stack - React Native with Expo SDK 54 - Expo Router for file-based navigation - TypeScript ## Get started 1. Install dependencies ```bash npm install ``` 2. Start the app ```bash npx expo start ``` ## Authentication Flow The app uses email-based OTP authentication with two distinct paths: ### Existing User (Login) ``` login.tsx -> Enter email -> welcome-back.tsx -> verify-otp.tsx -> Main App ``` 1. User enters email on login screen 2. System checks if email exists in database 3. If exists: navigates to "Welcome Back" screen, sends OTP 4. User enters OTP code 5. After verification: navigates to main app (tabs) ### New User (Registration) ``` login.tsx -> Enter email -> verify-email.tsx (auto-sends OTP) -> verify-otp.tsx -> enter-name.tsx -> add-loved-one.tsx -> Main App ``` 1. User enters email on login screen 2. System checks if email exists in database 3. If NOT exists: navigates to "Verify Email" screen 4. OTP is automatically sent when screen loads 5. User can optionally enter a partner/referral code (6-digit numeric) 6. User proceeds to OTP verification 7. After verification: enters their name 8. Then adds their first beneficiary (or skips) 9. Finally navigates to main app ### Partner/Referral Code Partner codes are 6-digit numeric codes for marketing/referrals: - Only available during NEW user registration (verify-email screen) - NOT shown for existing users logging in - Visual: 6 separate cells with hidden TextInput for keyboard - Only accepts digits (non-numeric characters are filtered out) - Test code "123456" available for development ## Key Files ### Authentication - `app/(auth)/login.tsx` - Email entry screen - `app/(auth)/verify-email.tsx` - OTP sending for new users + partner code - `app/(auth)/welcome-back.tsx` - OTP sending for existing users - `app/(auth)/verify-otp.tsx` - OTP verification - `app/(auth)/enter-name.tsx` - Name entry for new users - `app/(auth)/add-loved-one.tsx` - Add first beneficiary ### Main App - `app/(tabs)/index.tsx` - Beneficiary list (home) - `app/(tabs)/voice.tsx` - Voice assistant - `app/(tabs)/account.tsx` - Account settings ### Services - `services/api.ts` - API service - `services/sherpaTTS.ts` - Text-to-Speech (stub for Expo Go) - `contexts/AuthContext.tsx` - Authentication context - `contexts/BeneficiaryContext.tsx` - Beneficiary context ## Development Notes ### Expo Go Limitations Some features are stubbed when running in Expo Go: - `expo-speech-recognition` - Uses Alert fallback instead of native speech - `sherpa-onnx-tts` - Uses expo-speech instead of native TTS ### Running on Simulators Use specific UDID for each port: ```bash IOS_SIMULATOR_UDID=FCED72EF-3ADE-47D5-AC67-5C9B0DE59D7E npx expo start --port 8082 --ios ``` See `~/Desktop/dev instructions/SIMULATORS.md` for full port-to-UDID mapping.