WellNuo/README.md

106 lines
2.9 KiB
Markdown

# 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.