Skip to content

BorisGautier/kartia

Repository files navigation

KartIA

KartIA Logo

Flutter Version License: Apache 2.0 Firebase Mapbox

Dart Version Build Status Coverage Latest Release

GitHub Stars GitHub Forks Issues Pull Requests

OSM Google Gemini BLoC Contributions Welcome

KartIA est une super-application mobile open-source combinant intelligence artificielle (Google Gemini), cartographie (Mapbox/OpenStreetMap) et backend Firebase pour permettre aux citoyens africains de signaler, découvrir et contribuer à leur environnement local.

🌍 Donnons vie à la cartographie en Afrique, ensemble

🚀 Fonctionnalités

KartIA est une plateforme modulaire construite autour des besoins réels des communautés africaines :

📱 Module Signalement Communautaire (CivAct)

  • Signalement géolocalisé de problèmes urbains (routes, éclairage, déchets...)
  • Classification automatique par IA des problèmes à partir de photos
  • Suivi de l'évolution des signalements
  • Actions communautaires (votes, commentaires)

🔍 Module Découverte Locale par l'IA (CityAI Guide)

  • Recherche en langage naturel ("Où manger pas cher ?", "Où acheter des médicaments ?")
  • Suggestions intelligentes basées sur les préférences de l'utilisateur
  • Résumés générés par IA de lieux et établissements

🏥 Module SantéMap

  • Cartographie des infrastructures médicales avec services détaillés
  • Recherche par type de service médical
  • Fiches d'établissements enrichies par IA
  • Avis communautaire fiable sur la qualité des services

🗺️ Module OSM Helper

  • Contribution simplifiée à OpenStreetMap sans compétences techniques
  • L'IA analyse les photos pour suggérer automatiquement les tags OSM appropriés
  • Mode hors-ligne pour zones à connectivité limitée
  • Gamification des contributions (badges, niveaux)

💰 Module CartoPrix

  • Cartographie participative des prix des produits essentiels (carburant, denrées alimentaires...)
  • Visualisation par cartes thermiques des variations de prix
  • Alertes sur les hausses significatives
  • Analyse IA des tendances de prix

🛠️ Technologies utilisées

KartIA est construit avec les technologies modernes suivantes :

Domaine Technologies
Application Mobile Flutter 3.29.3, Dart 3.6.0, BLoC (State Management)
Cartographie OpenStreetMap (données), Mapbox SDK (rendu)
Backend Firebase (Auth, Firestore, Storage, Functions)
Intelligence Artificielle Google Gemini API (Pro + Vision)
Base de données locale Drift (SQLite)
CI/CD GitHub Actions
Analytics Firebase Analytics, Crashlytics
Tests flutter_test, integration_test, mockito

🏗️ Architecture

KartIA suit une architecture Clean Architecture pour une séparation claire des responsabilités :

lib/
├── generated/         # Code généré automatiquement
├── l10n/              # Fichiers d'internationalisation
├── src/
│   ├── core/          # Composants partagés
│   │   ├── database/  # Gestion base de données locale
│   │   ├── di/        # Injection de dépendances
│   │   ├── helpers/   # Classes helper
│   │   ├── services/  # Services partagés
│   │   └── utils/     # Utilitaires divers
│   ├── data/          # Couche de données
│   │   ├── datasources/
│   │   ├── models/    
│   │   └── repositories/
│   ├── domain/        # Couche de domaine (logique métier)
│   │   ├── entities/
│   │   ├── repositories/
│   │   └── usecases/
│   ├── modules/       # Modules fonctionnels
│   │   ├── app/       # Configuration app
│   │   ├── civact/    # Module Signalement
│   │   ├── city_ai_guide/ # Module Découverte
│   │   ├── sante_map/ # Module Santé
│   │   ├── osm_helper/ # Module OSM
│   │   └── carto_prix/ # Module Prix
│   ├── widgets/       # Widgets réutilisables
│   ├── app.dart       # Configuration app
│   ├── init.dart      # Initialisation
│   └── splash.screen.dart # Écran de démarrage
├── blocobserver.dart  # Observateur BLoC
└── main.dart          # Point d'entrée principal

🚦 Démarrage

Prérequis

  • Flutter SDK (3.29.3 ou supérieur)
  • Dart SDK (3.6.0 ou supérieur)
  • Android Studio / VS Code avec extensions Flutter
  • Compte Firebase (gratuit)
  • Compte Mapbox (gratuit avec quota)
  • Compte Google AI Studio (pour Gemini API)

Installation

  1. Clonez le dépôt :

    git clone https://github.com/BorisGautier/kartia.git
    cd kartia
  2. Vérifiez votre environnement Flutter :

    flutter doctor
  3. Installez les dépendances :

    flutter pub get
  4. Créez un fichier .env à la racine du projet :

    # Mapbox
    MAPBOX_API_KEY=your_mapbox_api_key_here
  5. Configurez Firebase :

    dart pub global activate flutterfire_cli
    flutterfire configure
  6. Générez les fichiers de localisation :

    dart run intl_utils:generate 
  7. Lancez l'application :

    flutter run 

🔄 Mode Hors-ligne

KartIA est conçu pour fonctionner dans des zones à connectivité limitée :

  • Stockage local des données via Drift (SQLite)
  • Mise en cache des tuiles de carte pour les zones fréquentes
  • Upload différé des contributions lorsque la connexion est rétablie
  • Fonctionnalités dégradées mais toujours utilisables sans connexion
  • Synchronisation intelligente en arrière-plan

🌐 Multilingue

KartIA est disponible en plusieurs langues :

  • 🇫🇷 Français (langue principale)
  • 🇬🇧 Anglais
  • 🚧 Prochainement : Arabe, Swahili, Wolof

Pour ajouter une nouvelle langue, consultez notre guide de traduction.

🤝 Contribuer

Les contributions sont les bienvenues ! Consultez CONTRIBUTING.md pour les directives.

Domaines où nous avons besoin d'aide

  • 🎨 UI/UX : Amélioration des interfaces utilisateur
  • 🌍 Traductions : Ajout de nouvelles langues
  • 📱 Optimisation offline : Amélioration de l'expérience hors-ligne
  • 📚 Documentation : Tutoriels, guides d'utilisation
  • 🧪 Tests : Couverture de tests unitaires et d'intégration
  • 🗺️ Données cartographiques : Enrichissement des données OSM
  • 🤖 IA : Amélioration des algorithmes de classification

Comment contribuer

  1. Fork le projet
  2. Créez votre branche feature (git checkout -b feature/AmazingFeature)
  3. Committez vos changements (git commit -m 'Add some AmazingFeature')
  4. Push vers la branche (git push origin feature/AmazingFeature)
  5. Ouvrez une Pull Request

🛣️ Roadmap

Période Milestone Statut
Q3 2025 MVP avec module Signalement et base cartographique 🚧 En cours
Q4 2025 Alpha avec intégration IA et module Découverte 📋 Planifié
Q1 2026 Beta avec modules SantéMap et OSM Helper 📋 Planifié
Q2 2026 Version 1.0 avec module CartoPrix 📋 Planifié
Q3 2026 Extensions communautaires et APIs publiques 📋 Planifié

🔧 Configuration et Structure

Structure du Projet

kartia/
├── android/                 # Configuration Android
├── ios/                     # Configuration iOS
├── lib/                     # Code Dart principal
├── cloud/                   # Fonctions Firebase Cloud
├── test/                    # Tests unitaires et d'intégration
├── docs/                    # Documentation
│   ├── architecture/        # Documentation d'architecture
│   ├── api/                 # Documentation API
│   └── screenshots/         # Captures d'écran
├── assets/                  # Ressources statiques
│   ├── images/              # Images et icônes
│   ├── map_styles/          # Styles de cartes personnalisés
│   └── translations/        # Fichiers de traduction
├── .github/                 # Configuration GitHub
│   └── workflows/           # GitHub Actions
└── scripts/                 # Scripts de build et déploiement

Configuration des APIs

Mapbox

  1. Créez un compte sur Mapbox
  2. Obtenez une clé API
  3. Ajoutez-la à votre fichier .env
  4. Configurez les styles de carte dans assets/map_styles/

Google Gemini API

  1. Créez un compte sur Google AI Studio
  2. Créez une clé API pour Gemini
  3. Ajoutez-la à votre fichier .env

🧪 Tests

Tests unitaires

flutter test

Tests d'intégration

flutter drive --target=test_driver/app.dart

Tests de widget

flutter test test/widget_test/

Couverture de code

flutter test --coverage
genhtml coverage/lcov.info -o coverage/html

📱 Variantes de Build

flutter run

Production

# Android
flutter build appbundle --release

# iOS
flutter build ipa --release

🚀 Déploiement

Android (Google Play Store)

flutter build appbundle --release

iOS (App Store)

flutter build ipa --release

Déploiement automatique

Les déploiements sont automatisés via GitHub Actions. Consultez .github/workflows/ pour plus de détails.

📊 Métriques et Monitoring

  • Firebase Analytics : Suivi de l'usage
  • Crashlytics : Rapports de crash
  • Performance Monitoring : Surveillance des performances
  • Remote Config : Configuration à distance
  • Graylog : Centralisation des logs

🔒 Sécurité

  • Chiffrement des données sensibles
  • Authentification sécurisée via Firebase
  • Validation côté serveur avec Cloud Functions
  • Respect du RGPD et des données personnelles

📄 Licence

Ce projet est sous licence Apache 2.0 - voir le fichier LICENSE pour plus de détails.

Résumé de la licence

  • Usage commercial autorisé
  • Modification autorisée
  • Distribution autorisée
  • Utilisation privée autorisée
  • ⚖️ Attribution requise
  • ⚖️ Conservation des notices de licence
  • 🛡️ Protection contre les litiges de brevets

🙏 Remerciements

📞 Support & Contact

📈 Statistiques

GitHub commit activity GitHub last commit GitHub contributors


Si ce projet vous intéresse, n'hésitez pas à lui donner une étoile et à le partager !

Conçu avec ❤️ pour améliorer la cartographie participative en Afrique


Made in Cameroon For Africa

About

KartIA est une super-application mobile combinant intelligence artificielle & cartographie pour permettre aux citoyens africains de signaler, découvrir et contribuer à leur environnement local.

Topics

Resources

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

Used by

Contributors

Languages