as-app/cline_docs/techContext.md

4.1 KiB

Technical Context

Technology Stack

  • React Native
  • GraphQL with Hasura
    • Apollo Client for frontend
    • Federated remote schemas
  • Firebase (FCM only for push notifications)
  • Sentry for error tracking

Development Environment

  • Node.js (specified in .node-version)
  • Yarn package manager (evidenced by .yarnrc.yml)
  • ESLint for code linting (.eslintrc.js)
  • TypeScript configuration (tsconfig.json)

Backend Architecture

  • Hasura GraphQL server
    • Federation of remote schemas
    • Real-time subscriptions support
    • Custom business logic through remote schemas

Frontend Architecture

  • React Native mobile app
  • Apollo Client for GraphQL state management
  • Real-time updates via GraphQL subscriptions
  • Push notifications via Firebase Cloud Messaging

Authentication System

  1. SMS Authentication:

    • Two distinct SMS types: "R" (Registration) and "C" (Connect)
    • Type-specific loading states
    • 3-minute timeout mechanism
    • Login request monitoring via GraphQL subscription
  2. Account Management:

    • Modal-based interface
    • Support for both SMS and email authentication
    • Loading state coordination based on action type
    • Login request handling through GraphQL mutations

Loading State Management

  1. Component-Level Loading:

    • Button built-in loading prop
    • LittleLoader component with theme support
    • Loading state timeouts
    • Login request-based clearing
  2. Theme Integration:

    • Dark/light theme support
    • Dynamic color filters for Lottie animations
    • Theme-aware component styling

Navigation & Deep Linking System

  • Parameter-based state management
  • Modal coordination
  • Action-specific navigation flows
  • Deep Linking Integration:
    1. Required Configurations:

      • iOS Universal Links setup
      • Associated Domains capability
      • apple-app-site-association file
      • URL scheme configurations in Info.plist
      • Custom Expo plugin to preserve URL schemes during prebuild
    2. Technical Requirements:

      • HTTPS server for apple-app-site-association file
      • Proper MIME type (application/json)
      • No redirects for /.well-known/apple-app-site-association
      • Valid app ID format (TeamID.BundleID)
      • CFBundleURLName format (following Expo's convention):
        • Production scheme: com.alertesecours.alertesecours (matches bundle ID)
        • Development scheme: com.alertesecours.alertesecours.expo (bundle ID + .expo)
        • Format defined in Expo's source code for consistency
    3. Implementation Components:

      • Expo Linking module integration
      • Initial URL handling
      • URL event listeners
      • Custom deep link parsing logic
      • withCustomScheme plugin for URL scheme preservation

Build & Deployment Tools

  • Fastlane for deployment
  • Custom build scripts
  • Environment configurations (.env.default, .env.staging, .env.prod)

Platform-Specific

iOS

  • Xcode project configuration
  • CocoaPods for dependency management
  • Custom entitlements and capabilities
  • FCM push notification setup

Android

  • Gradle build system
  • Custom Gradle plugins
  • FCM integration for push notifications

Development Setup Requirements

To be completed with setup instructions

Technical Constraints

  • Loading states must be tied to specific actions
  • Loading timeouts required for all async operations
  • Theme compatibility required for all UI components
  • Proper hook usage and dependency management

Pending Implementations

  • Multilingual support (i18n infrastructure exists but not implemented)

Recent Technical Improvements

  1. Loading State Management:

    • Action-specific loading indicators
    • Automatic timeout mechanism
    • Login request-based clearing
    • Theme-aware loading animations
  2. Component Architecture:

    • Proper hook dependency management
    • Consistent prop patterns
    • Clear separation of concerns
    • Theme integration
  3. Navigation Flow:

    • Type-specific parameter passing
    • Modal state coordination
    • Loading state synchronization

*Note: This document needs to be updated with:

  • Complete dependency list
  • Development setup instructions
  • Known technical limitations
  • Performance constraints