A production-ready mobile application for conducting medical surveys using voice input in Hindi. Built with Expo React Native, this app works offline-first and uses open-source technologies to maximize efficiency.
- Hindi speech-to-text input using device capabilities
- Text-to-speech for questions and instructions
- Fallback to manual input when voice fails
- Automatic retry mechanism for misheard responses
- Complete offline functionality with SQLite database
- Automatic sync when internet becomes available
- Queue management for unsynced data
- Visual indicators for sync status
- Structured questionnaire with branching logic
- Gender-specific and age-specific questions
- Validation and confirmation for critical inputs
- Support for multiple question types (text, number, boolean, choice, multiselect)
- AES-256 encryption for stored data
- Secure data transmission over HTTPS
- Minimal data collection (privacy by design)
- Encrypted local storage
- Icon-first, text-light interface for low-literacy users
- Large buttons and simple navigation
- Progress indicators and status updates
- Culturally appropriate Hindi language throughout
- Clone the repository:
git clone https://github.com/yourusername/mediassist.git
cd mediassist
- Install dependencies:
npm install
- Install Expo CLI globally (if not already installed):
npm install -g expo-cli
- Start the development server:
npm start
# or
expo start
- Run on your device:
- Install Expo Go app on your Android/iOS device
- Scan the QR code from the terminal or Expo Dev Tools
expo build:android -t apk
expo build:ios
src/
├── components/ # Reusable UI components
├── screens/ # Screen components
├── services/ # Core services
│ ├── database/ # SQLite database service
│ ├── voice/ # Voice engine (STT/TTS)
│ ├── sync/ # Sync manager
│ ├── security/ # Encryption service
│ ├── survey/ # Survey questions and logic
│ ├── permissions/ # Permission management
│ └── network/ # Network monitoring
└── assets/ # Images and static resources
- Framework: Expo React Native
- Language: JavaScript
- Database: SQLite (expo-sqlite)
- Voice: expo-speech, expo-av
- Encryption: crypto-js, expo-crypto
- Navigation: React Navigation
- State Management: React Hooks
The app uses Expo's built-in speech capabilities for TTS and audio recording for STT. In production, you can integrate:
- Vosk: Open-source offline speech recognition
- Coqui TTS: High-quality open-source TTS
- eSpeak/Pico TTS: Lightweight alternatives
id
: Primary keysurvey_id
: Unique survey identifierpatient_data
: Encrypted patient informationresponses
: Encrypted survey responsesis_synced
: Sync status flagcreated_at
: Timestamp
- Manages offline sync queue
- Tracks retry attempts
- Handles failed sync operations
The app is designed to sync with a backend API at:
https://api.mediassist.health
Configure your API endpoint in:
src/services/sync/SyncManager.js
- Comprehensive error boundaries
- Graceful fallbacks for voice failures
- Network error recovery
- Validation and user feedback
- Crash reporting integration ready
- Lazy loading of screens
- Optimized bundle size
- Efficient database queries
- Minimal re-renders
- Background sync processing
Run tests:
npm test
- Configure production API endpoints
- Set up crash reporting service
- Generate production signing keys
- Configure app store metadata
- Test on low-end devices
- Verify offline functionality
- Test voice recognition accuracy
- Validate encryption implementation
For issues and questions, please open an issue on GitHub.
MIT License - See LICENSE file for details
- MediAssist Development Team
- Built with Expo and React Native
- Voice capabilities powered by device native features
- Designed for rural healthcare initiatives in India