๐ฑ Com DEALL Mobile App
Com DEALL Mobile is a comprehensive React Native application built with Expo for iOS and Android platforms. It serves as the mobile companion to the web platform, providing specialized therapy management for children with developmental needs.
The mobile app offers a native, optimized experience for both Parents and Therapists, enabling seamless communication, assessment tracking, lesson plan management, and appointment scheduling on mobile devices.
๐ฏ Key Featuresโ
- Dual User Roles: Separate experiences for Parents and Therapists
- Real-time Communication: In-app chat with push notifications
- Assessment Management: Mobile-optimized assessment workflows
- Lesson Plan Access: View and track lesson plans on-the-go
- Appointment Scheduling: Book and manage therapy sessions
- Offline Capabilities: Core features work without internet
- Multi-language Support: Localized for multiple languages
- Push Notifications: Real-time alerts and updates
- Media Sharing: Photo, video, and document sharing in chat
๐๏ธ Architecture & Technology Stackโ
Core Technologiesโ
| Area | Technology / Library |
|---|---|
| Framework | React Native + Expo |
| Runtime | JavaScript / TypeScript |
| Language | TypeScript |
| Navigation | React Navigation v6 |
| State Management | Redux Toolkit + React Context |
| Styling | Shopify Restyle + Custom Theme System |
| UI Components | Custom Components + React Native Elements |
| Animations | React Native Reanimated v3 |
| Forms | Formik + Yup Validation |
| Authentication | JWT + MMKV Storage |
| API Client | Apollo Client (GraphQL) |
| Real-time | Socket.IO + GraphQL Subscriptions |
| Push Notifications | Firebase Cloud Messaging + Expo Notifications |
| Media Handling | React Native Image Picker + Document Picker |
| PDF Generation | React Native HTML to PDF |
| Localization | i18next + React i18next |
| Storage | MMKV (Fast Key-Value Storage) |
| Deep Linking | Expo Linking + Custom URL Schemes |
Mobile-Specific Featuresโ
- Network Awareness: Real-time network status monitoring
- OTA Updates: Over-the-air updates without app store
- Background Sync: Automatic data synchronization
- Biometric Authentication: Touch ID / Face ID support
- Camera Integration: Direct photo/video capture
- File System Access: Local file management
- Device Information: Hardware-specific optimizations
- Platform Adaptations: iOS/Android specific UI/UX
๐ฑ Platform Supportโ
iOSโ
- Minimum Version: iOS 13.0+
- Target Version: iOS 17.0+
- Architecture: ARM64 (Apple Silicon + Intel)
- Features: Face ID, Touch ID, Apple Sign-In, In-App Purchases
Androidโ
- Minimum Version: Android 7.0 (API 24)
- Target Version: Android 14 (API 34)
- Architecture: ARM64, ARMv7, x86_64
- Features: Fingerprint, Google Sign-In, Play Store Billing
๐ Development & Buildโ
Development Scriptsโ
# Start development server
npm run start
# Run on specific platforms
npm run android
npm run ios
npm run web
# Build for production
npm run android-build
npm run ios-build
# Install native dependencies
npm run android:install
npm run ios:install
# Generate GraphQL types
npm run gen
============================================
ENVIRONMENT CONFIGURATION
============================================
Environment: staging | production | development
NODE_ENV=staging APP_ENV=staging
============================================
API CONFIGURATION
============================================
GraphQL API Endpoints
EXPO_PUBLIC_GRAPHQL_URL=https://staging-hasura.communicaids.com/v1/graphql EXPO_PUBLIC_API_URL=https://staging-hasura.communicaids.com/v1 EXPO_PUBLIC_WS_URL=wss://staging-hasura.communicaids.com/v1/graphql
GraphQL Server URIs (as per documentation)
GRAPHQL_SERVER_URI=https://staging-hasura.communicaids.com/v1/graphql GRAPHQL_SERVER_SUBSCRIPTION_URI=wss://staging-hasura.communicaids.com/v1/graphql
REST API Endpoints
EXPO_PUBLIC_REST_API_URL=https://staging-api.communicaids.com/api EXPO_PUBLIC_SOCKET_URL=https://staging-api.communicaids.com
Admin Configuration
EXPO_PUBLIC_ADMIN_SECRET=74686973697361746573747365637265746b6579 EXPO_PUBLIC_ADMIN_EMAIL=resources@communicadis.com
============================================
MEDIA & FILE UPLOAD
============================================
EXPO_PUBLIC_MEDIA_UPLOAD_PUBLIC=https://staging-api.communicaids.com/api/media/upload/public EXPO_PUBLIC_MEDIA_UPLOAD_PRIVATE=https://staging-api.communicaids.com/api/media/upload/private EXPO_PUBLIC_MEDIA_BASE_URL=https://staging-api.communicaids.com/media EXPO_PUBLIC_CDN_URL=https://cdn.communicaids.com
Maximum file upload sizes (in MB)
EXPO_PUBLIC_MAX_IMAGE_SIZE=10 EXPO_PUBLIC_MAX_VIDEO_SIZE=100 EXPO_PUBLIC_MAX_DOCUMENT_SIZE=25
============================================
AUTHENTICATION
============================================
JWT Configuration
EXPO_PUBLIC_JWT_SECRET=your-jwt-secret-key-here EXPO_PUBLIC_JWT_EXPIRY=7d EXPO_PUBLIC_REFRESH_TOKEN_EXPIRY=30d
Google OAuth
EXPO_PUBLIC_WEBCLIENT_ID=823790388957-jhofqrta99d129h24rbpq4k6e39m80jp.apps.googleusercontent.com EXPO_PUBLIC_GOOGLE_IOS_CLIENT_ID=your-ios-client-id.apps.googleusercontent.com EXPO_PUBLIC_GOOGLE_ANDROID_CLIENT_ID=your-android-client-id.apps.googleusercontent.com
Apple Sign In
EXPO_PUBLIC_APPLE_CLIENT_ID=com.comdeall.communicaids EXPO_PUBLIC_APPLE_REDIRECT_URI=https://staging-api.communicaids.com/auth/apple/callback
============================================
FIREBASE CONFIGURATION
============================================
Firebase Project
EXPO_PUBLIC_FIREBASE_PROJECT_ID=your-project-id EXPO_PUBLIC_FIREBASE_API_KEY=your-firebase-api-key EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN=your-project-id.firebaseapp.com EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET=your-project-id.appspot.com EXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=823790388957 EXPO_PUBLIC_FIREBASE_APP_ID=1:823790388957:android:your-app-id EXPO_PUBLIC_FIREBASE_MEASUREMENT_ID=G-XXXXXXXXXX
Firebase Cloud Messaging
EXPO_PUBLIC_FCM_SERVER_KEY=your-fcm-server-key EXPO_PUBLIC_FCM_VAPID_KEY=your-fcm-vapid-key
============================================
PUSH NOTIFICATIONS
============================================
Expo Push Notification Token
EXPO_PUBLIC_PUSH_NOTIFICATION_KEY=your-expo-push-notification-key
OneSignal (Alternative)
EXPO_PUBLIC_ONESIGNAL_APP_ID=your-onesignal-app-id
============================================
PAYMENT GATEWAYS
============================================
Razorpay
EXPO_PUBLIC_RAZOR_PAY_KEY=rzp_test_pDQlBtKuV7XM8L EXPO_PUBLIC_RAZOR_PAY_SECRET=your-razorpay-secret
Stripe (if applicable)
EXPO_PUBLIC_STRIPE_PUBLIC_KEY=pk_test_your-stripe-key EXPO_PUBLIC_STRIPE_SECRET_KEY=sk_test_your-stripe-secret
============================================
IN-APP PURCHASES
============================================
iOS App Store
EXPO_PUBLIC_RC_IOS=public_api_key_for_purchases EXPO_PUBLIC_APP_STORE_SECRET=api_key_for_app_store EXPO_PUBLIC_IOS_APP_ID=your-ios-app-id
Android Play Store
EXPO_PUBLIC_RC_ANDROID=public_api_key_for_android_purchases EXPO_PUBLIC_PLAY_STORE_KEY=your-play-store-key
RevenueCat (if used)
EXPO_PUBLIC_REVENUE_CAT_API_KEY=your-revenuecat-api-key
============================================
DEEP LINKING
============================================
EXPO_PUBLIC_DEEP_LINK_SCHEME=com.comdeall.communicaids EXPO_PUBLIC_DEEP_LINK_PREFIX=communicaids:// EXPO_PUBLIC_UNIVERSAL_LINK_DOMAIN=communicaids.com EXPO_PUBLIC_APP_LINK_DOMAIN=app.communicaids.com
============================================
SOCKET.IO CONFIGURATION
============================================
EXPO_PUBLIC_SOCKET_URL=https://staging-api.communicaids.com EXPO_PUBLIC_SOCKET_PATH=/socket.io EXPO_PUBLIC_SOCKET_TRANSPORTS=websocket,polling EXPO_PUBLIC_SOCKET_RECONNECTION_ATTEMPTS=5 EXPO_PUBLIC_SOCKET_RECONNECTION_DELAY=3000
============================================
ANALYTICS & MONITORING
============================================
Sentry
EXPO_PUBLIC_SENTRY_DSN=your-sentry-dsn EXPO_PUBLIC_SENTRY_ENVIRONMENT=staging EXPO_PUBLIC_SENTRY_ENABLED=true
Google Analytics
EXPO_PUBLIC_GA_TRACKING_ID=UA-XXXXXXXXX-X
Mixpanel
EXPO_PUBLIC_MIXPANEL_TOKEN=your-mixpanel-token
Amplitude
EXPO_PUBLIC_AMPLITUDE_API_KEY=your-amplitude-key
============================================
FEATURE FLAGS
============================================
EXPO_PUBLIC_ENABLE_BIOMETRIC_AUTH=true EXPO_PUBLIC_ENABLE_OFFLINE_MODE=true EXPO_PUBLIC_ENABLE_PUSH_NOTIFICATIONS=true EXPO_PUBLIC_ENABLE_IN_APP_PURCHASES=true EXPO_PUBLIC_ENABLE_CHAT=true EXPO_PUBLIC_ENABLE_VIDEO_CALLS=false EXPO_PUBLIC_ENABLE_ANALYTICS=true EXPO_PUBLIC_ENABLE_CRASH_REPORTING=true
============================================
LOCALIZATION
============================================
EXPO_PUBLIC_DEFAULT_LANGUAGE=en EXPO_PUBLIC_SUPPORTED_LANGUAGES=en,hi,bn,ta,ml EXPO_PUBLIC_ENABLE_RTL=true
============================================
APP CONFIGURATION
============================================
App Information
EXPO_PUBLIC_APP_NAME=Com DEALL EXPO_PUBLIC_APP_VERSION=1.0.0 EXPO_PUBLIC_APP_BUILD_NUMBER=1 EXPO_PUBLIC_BUNDLE_ID=com.comdeall.communicaids
App Store URLs
EXPO_PUBLIC_IOS_APP_STORE_URL=https://apps.apple.com/app/idXXXXXXXXXX EXPO_PUBLIC_ANDROID_PLAY_STORE_URL=https://play.google.com/store/apps/details?id=com.comdeall.communicaids
============================================
CACHE & STORAGE
============================================
EXPO_PUBLIC_CACHE_EXPIRY=86400 EXPO_PUBLIC_MAX_CACHE_SIZE=100 EXPO_PUBLIC_ENABLE_MMKV_ENCRYPTION=true EXPO_PUBLIC_STORAGE_KEY_PREFIX=comdeall_
============================================
NETWORK CONFIGURATION
============================================
EXPO_PUBLIC_API_TIMEOUT=30000 EXPO_PUBLIC_UPLOAD_TIMEOUT=120000 EXPO_PUBLIC_MAX_RETRIES=3 EXPO_PUBLIC_RETRY_DELAY=1000 EXPO_PUBLIC_ENABLE_CERTIFICATE_PINNING=false
============================================
VIDEO CONFERENCE (if applicable)
============================================
EXPO_PUBLIC_AGORA_APP_ID=your-agora-app-id EXPO_PUBLIC_TWILIO_ACCOUNT_SID=your-twilio-sid EXPO_PUBLIC_TWILIO_API_KEY=your-twilio-api-key EXPO_PUBLIC_JITSI_SERVER_URL=https://meet.jit.si
============================================
THIRD-PARTY SERVICES
============================================
Maps
EXPO_PUBLIC_GOOGLE_MAPS_API_KEY=your-google-maps-api-key EXPO_PUBLIC_MAPBOX_ACCESS_TOKEN=your-mapbox-token
SMS/Phone
EXPO_PUBLIC_TWILIO_PHONE_NUMBER=+1234567890
EXPO_PUBLIC_SENDGRID_API_KEY=your-sendgrid-key
============================================
DEVELOPMENT TOOLS
============================================
Debug Configuration
EXPO_PUBLIC_ENABLE_DEBUG_MENU=false EXPO_PUBLIC_ENABLE_REDUX_DEVTOOLS=false EXPO_PUBLIC_LOG_LEVEL=info EXPO_PUBLIC_ENABLE_NETWORK_LOGGER=false
OTA Updates
EXPO_PUBLIC_ENABLE_OTA_UPDATES=true EXPO_PUBLIC_OTA_UPDATE_CHANNEL=staging
============================================
SECURITY
============================================
Encryption
EXPO_PUBLIC_ENCRYPTION_KEY=your-32-character-encryption-key EXPO_PUBLIC_ENABLE_DATA_ENCRYPTION=true
API Keys Encryption
EXPO_PUBLIC_API_KEY_SALT=your-salt-value
============================================
PERFORMANCE
============================================
EXPO_PUBLIC_ENABLE_HERMES=true EXPO_PUBLIC_ENABLE_FAST_REFRESH=true EXPO_PUBLIC_ENABLE_PERFORMANCE_MONITORING=true
============================================
NOTES
============================================
1. Replace all placeholder values with actual credentials
2. Never commit this file to version control
3. Use different values for production environment
4. Rotate secrets regularly
5. Use environment-specific .env files (.env.staging, .env.production)
6. All EXPO_PUBLIC_ prefixed variables are accessible in the app
7. Variables without EXPO_PUBLIC_ prefix are build-time only
๐ง Key Mobile Componentsโ
Navigation Structureโ
- Tab-based Navigation: Bottom tabs for main sections
- Stack Navigation: Hierarchical screen navigation
- Modal Presentations: Overlay screens for focused tasks
- Deep Linking: URL-based navigation and sharing
State Managementโ
- Redux Store: Global application state
- Context Providers: Component-level state sharing
- MMKV Storage: Persistent local storage
- Apollo Cache: GraphQL data caching
Real-time Featuresโ
- Socket.IO: Real-time chat and notifications
- GraphQL Subscriptions: Live data updates
- Push Notifications: Background message delivery
- Network Monitoring: Connection status awareness
๐ Performance Optimizationsโ
- Code Splitting: Lazy loading of screens and components
- Image Optimization: Fast Image for efficient rendering
- Memory Management: Proper cleanup and garbage collection
- Bundle Optimization: Tree shaking and dead code elimination
- Caching Strategies: Intelligent data caching and persistence
๐ Security Featuresโ
- JWT Authentication: Secure token-based auth
- Biometric Security: Device-level authentication
- Data Encryption: Sensitive data protection
- Certificate Pinning: API communication security
- Secure Storage: Encrypted local data storage
๐ Internationalizationโ
The app supports multiple languages with full RTL support:
- English (en) - Default
- Hindi (hi) - เคนเคฟเคเคฆเฅ
- Bengali (bn) - เฆฌเฆพเฆเฆฒเฆพ
- Tamil (ta) - เฎคเฎฎเฎฟเฎดเฏ
- Malayalam (ml) - เดฎเดฒเดฏเดพเดณเด
๐ Analytics & Monitoringโ
- Crash Reporting: Automatic error tracking
- Performance Monitoring: App performance metrics
- User Analytics: Usage patterns and behavior
- Network Monitoring: API performance tracking
- Custom Events: Business-specific analytics