Skip to main content

๐Ÿ“ฑ 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โ€‹

AreaTechnology / Library
FrameworkReact Native + Expo
RuntimeJavaScript / TypeScript
LanguageTypeScript
NavigationReact Navigation v6
State ManagementRedux Toolkit + React Context
StylingShopify Restyle + Custom Theme System
UI ComponentsCustom Components + React Native Elements
AnimationsReact Native Reanimated v3
FormsFormik + Yup Validation
AuthenticationJWT + MMKV Storage
API ClientApollo Client (GraphQL)
Real-timeSocket.IO + GraphQL Subscriptions
Push NotificationsFirebase Cloud Messaging + Expo Notifications
Media HandlingReact Native Image Picker + Document Picker
PDF GenerationReact Native HTML to PDF
Localizationi18next + React i18next
StorageMMKV (Fast Key-Value Storage)
Deep LinkingExpo 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

Email

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โ€‹

  • 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

๐ŸŽฏ Next Stepsโ€‹