Technology Stack - utourismboard/explore-uganda-application-documentation GitHub Wiki

Technology Stack

Overview

This document details the complete technology stack used in the Explore Uganda App, including frameworks, libraries, and tools used for development, testing, and deployment.

Frontend Technologies

Core Framework

  • Flutter SDK: v3.19.0
  • Dart: v3.3.0
  • Minimum SDK Versions:
    • Android: API 21 (Android 5.0)
    • iOS: 13.0

State Management

  • Provider: v6.1.1
  • Riverpod: v2.4.9
  • Flutter Bloc: v8.1.3

UI Components

  • Material Components: Latest
  • Cupertino Components: Latest
  • Custom Widgets: Internal library
  • Flutter Maps: v5.3.0
  • Image Picker: v1.0.4
  • Cached Network Image: v3.3.0

Navigation

  • Auto Route: v7.8.4
  • Go Router: v13.0.1

Storage

  • Shared Preferences: v2.2.2
  • Flutter Secure Storage: v9.0.0
  • SQLite: v2.3.0

Network

  • Dio: v5.4.0
  • HTTP: v1.1.0
  • WebSocket: Latest

Backend Technologies

Firebase Services

  • Firebase Core: v2.24.2
  • Authentication: v4.15.3
  • Cloud Firestore: v4.13.6
  • Cloud Functions: v4.5.8
  • Cloud Storage: v11.5.6
  • Analytics: v10.7.4
  • Crashlytics: v3.3.7

APIs

  • Google Maps: Latest
  • Payment Gateways:
    • Stripe: v1.0.0
    • PayPal: v2.0.0
    • Mobile Money: Custom implementation
  • Push Notifications: Firebase Cloud Messaging

Development Tools

IDE & Extensions

  • VS Code:
    • Flutter extension
    • Dart extension
    • Firebase extension
  • Android Studio:
    • Flutter plugin
    • Dart plugin

Version Control

  • Git: v2.43.0
  • GitHub: Enterprise
  • GitFlow: Custom workflow

Testing

  • Flutter Test: Built-in
  • Mockito: v5.4.4
  • Integration Tests: Flutter Driver
  • Widget Tests: Built-in
  • Unit Tests: Built-in

CI/CD

  • GitHub Actions: Custom workflows
  • Firebase App Distribution
  • Fastlane: iOS & Android deployment
  • Code Quality:
    • SonarQube
    • Dart Analyzer
    • Flutter Linter

Infrastructure

Cloud Services

  • Firebase: Production environment
  • Google Cloud Platform:
    • Cloud Storage
    • Cloud Functions
    • Cloud Run

Monitoring & Analytics

  • Firebase Analytics
  • Firebase Crashlytics
  • Custom Analytics Dashboard
  • Performance Monitoring

Security

  • SSL/TLS: Latest
  • JWT: Authentication
  • OAuth 2.0: Social login
  • Firebase Security Rules
  • App Security:
    • ProGuard (Android)
    • Code Signing (iOS)

Development Environment Setup

Prerequisites

# Flutter SDK
flutter: '>=3.19.0 <4.0.0'
dart: '>=3.3.0 <4.0.0'

# Development Tools
git: '^2.43.0'
nodejs: '^20.0.0'
npm: '^10.0.0'

Getting Started

# Clone repository
git clone https://github.com/explore-uganda/mobile-app.git

# Install dependencies
flutter pub get

# Run development server
flutter run

Version Compatibility Matrix

Component Version Compatibility
Flutter 3.19.0 Required
Dart 3.3.0 Required
Firebase Latest Required
Google Maps Latest Required
Provider 6.1.1 Required
Dio 5.4.0 Required

Performance Optimization

Code Optimization

  • Tree shaking enabled
  • R8/ProGuard configuration
  • Image optimization
  • Code splitting

Build Optimization

  • Deferred loading
  • Asset optimization
  • Dependency optimization
  • Build size optimization

Dependencies

Core Dependencies

dependencies:
  flutter:
    sdk: flutter
  firebase_core: ^2.x.x
  firebase_auth: ^4.x.x
  cloud_firestore: ^4.x.x
  google_maps_flutter: ^2.x.x
  provider: ^6.x.x
  http: ^1.x.x
  shared_preferences: ^2.x.x
  flutter_secure_storage: ^8.x.x

Dev Dependencies

dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_lints: ^2.x.x
  build_runner: ^2.x.x
  mockito: ^5.x.x

Build and Release Process

Development Workflow

  1. Local development
  2. Code review
  3. Automated testing
  4. Staging deployment
  5. Production release

CI/CD Pipeline

graph TD
    A[Code Push] --> B[Automated Tests]
    B --> C[Build]
    C --> D[Deploy to Staging]
    D --> E[QA Testing]
    E --> F[Production Deploy]

Environment Setup

Development Environment

  • Flutter SDK setup
  • Firebase project configuration
  • API key management
  • Local environment variables

Production Environment

  • Release signing
  • API restrictions
  • Performance monitoring
  • Error tracking

Related Documentation