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
- Local development
- Code review
- Automated testing
- Staging deployment
- 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