{"id":28804927,"url":"https://github.com/borisgautier/kartia","last_synced_at":"2026-03-17T23:06:43.070Z","repository":{"id":293817173,"uuid":"985193922","full_name":"BorisGautier/kartia","owner":"BorisGautier","description":"KartIA est une super-application mobile combinant intelligence artificielle \u0026 cartographie pour permettre aux citoyens africains de signaler, découvrir et contribuer à leur environnement local.","archived":false,"fork":false,"pushed_at":"2025-06-01T06:03:30.000Z","size":4725,"stargazers_count":1,"open_issues_count":10,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-11T14:12:40.699Z","etag":null,"topics":["firebase","flutter","gemini","mapbox","openstreetmap"],"latest_commit_sha":null,"homepage":"https://kartia.app","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BorisGautier.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-17T08:54:54.000Z","updated_at":"2025-05-27T18:51:39.000Z","dependencies_parsed_at":"2025-06-18T09:53:13.926Z","dependency_job_id":null,"html_url":"https://github.com/BorisGautier/kartia","commit_stats":null,"previous_names":["borisgautier/gemini_flutter_demo","borisgautier/kartia"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/BorisGautier/kartia","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BorisGautier%2Fkartia","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BorisGautier%2Fkartia/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BorisGautier%2Fkartia/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BorisGautier%2Fkartia/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BorisGautier","download_url":"https://codeload.github.com/BorisGautier/kartia/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BorisGautier%2Fkartia/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30635156,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-17T22:38:22.569Z","status":"ssl_error","status_checked_at":"2026-03-17T22:38:11.804Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["firebase","flutter","gemini","mapbox","openstreetmap"],"created_at":"2025-06-18T09:42:21.897Z","updated_at":"2026-03-17T23:06:43.043Z","avatar_url":"https://github.com/BorisGautier.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# KartIA\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/images/logo.png\" alt=\"KartIA Logo\" width=\"200\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://flutter.dev\"\u003e\u003cimg src=\"https://img.shields.io/badge/Flutter-3.29.3-blue.svg?logo=flutter\" alt=\"Flutter Version\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://opensource.org/licenses/Apache-2.0\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-Apache%202.0-blue.svg\" alt=\"License: Apache 2.0\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://firebase.google.com\"\u003e\u003cimg src=\"https://img.shields.io/badge/Firebase-Enabled-orange?logo=firebase\" alt=\"Firebase\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.mapbox.com\"\u003e\u003cimg src=\"https://img.shields.io/badge/Mapbox-Custom%20Maps-green?logo=mapbox\" alt=\"Mapbox\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://dart.dev\"\u003e\u003cimg src=\"https://img.shields.io/badge/Dart-3.6.0-0175C2?logo=dart\" alt=\"Dart Version\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/BorisGautier/kartia/actions\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/BorisGautier/kartia/ci.yml?logo=github\" alt=\"Build Status\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://codecov.io/gh/BorisGautier/kartia\"\u003e\u003cimg src=\"https://img.shields.io/codecov/c/github/BorisGautier/kartia?logo=codecov\" alt=\"Coverage\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/BorisGautier/kartia/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/BorisGautier/kartia?logo=github\" alt=\"Latest Release\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/BorisGautier/kartia/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/BorisGautier/kartia?style=social\" alt=\"GitHub Stars\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/BorisGautier/kartia/forks\"\u003e\u003cimg src=\"https://img.shields.io/github/forks/BorisGautier/kartia?style=social\" alt=\"GitHub Forks\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/BorisGautier/kartia/issues\"\u003e\u003cimg src=\"https://img.shields.io/github/issues/BorisGautier/kartia?logo=github\" alt=\"Issues\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/BorisGautier/kartia/pulls\"\u003e\u003cimg src=\"https://img.shields.io/github/issues-pr/BorisGautier/kartia?logo=github\" alt=\"Pull Requests\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.openstreetmap.org\"\u003e\u003cimg src=\"https://img.shields.io/badge/OpenStreetMap-Supported-7EBC6F?logo=openstreetmap\" alt=\"OSM\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://ai.google.dev\"\u003e\u003cimg src=\"https://img.shields.io/badge/Google%20Gemini-AI%20Powered-4285f4?logo=google\" alt=\"Google Gemini\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://bloc.dev\"\u003e\u003cimg src=\"https://img.shields.io/badge/State%20Management-BLoC-orange?logo=flutter\" alt=\"BLoC\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/BorisGautier/kartia/blob/main/CONTRIBUTING.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/Contributions-Welcome-brightgreen\" alt=\"Contributions Welcome\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n**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.\n\n🌍 _Donnons vie à la cartographie en Afrique, ensemble_\n\n## 🚀 Fonctionnalités\n\nKartIA est une plateforme modulaire construite autour des besoins réels des communautés africaines :\n\n### 📱 Module Signalement Communautaire (CivAct)\n- Signalement géolocalisé de problèmes urbains (routes, éclairage, déchets...)\n- Classification automatique par IA des problèmes à partir de photos\n- Suivi de l'évolution des signalements\n- Actions communautaires (votes, commentaires)\n\n### 🔍 Module Découverte Locale par l'IA (CityAI Guide)\n- Recherche en langage naturel (\"Où manger pas cher ?\", \"Où acheter des médicaments ?\")\n- Suggestions intelligentes basées sur les préférences de l'utilisateur\n- Résumés générés par IA de lieux et établissements\n\n### 🏥 Module SantéMap\n- Cartographie des infrastructures médicales avec services détaillés\n- Recherche par type de service médical\n- Fiches d'établissements enrichies par IA\n- Avis communautaire fiable sur la qualité des services\n\n### 🗺️ Module OSM Helper\n- Contribution simplifiée à OpenStreetMap sans compétences techniques\n- L'IA analyse les photos pour suggérer automatiquement les tags OSM appropriés\n- Mode hors-ligne pour zones à connectivité limitée\n- Gamification des contributions (badges, niveaux)\n\n### 💰 Module CartoPrix\n- Cartographie participative des prix des produits essentiels (carburant, denrées alimentaires...)\n- Visualisation par cartes thermiques des variations de prix\n- Alertes sur les hausses significatives\n- Analyse IA des tendances de prix\n\n## 🛠️ Technologies utilisées\n\nKartIA est construit avec les technologies modernes suivantes :\n\n| Domaine | Technologies |\n|---------|--------------|\n| **Application Mobile** | Flutter 3.29.3, Dart 3.6.0, BLoC (State Management) |\n| **Cartographie** | OpenStreetMap (données), Mapbox SDK (rendu) |\n| **Backend** | Firebase (Auth, Firestore, Storage, Functions) |\n| **Intelligence Artificielle** | Google Gemini API (Pro + Vision) |\n| **Base de données locale** | Drift (SQLite) |\n| **CI/CD** | GitHub Actions |\n| **Analytics** | Firebase Analytics, Crashlytics |\n| **Tests** | flutter_test, integration_test, mockito |\n\n## 🏗️ Architecture\n\nKartIA suit une architecture Clean Architecture pour une séparation claire des responsabilités :\n\n```\nlib/\n├── generated/         # Code généré automatiquement\n├── l10n/              # Fichiers d'internationalisation\n├── src/\n│   ├── core/          # Composants partagés\n│   │   ├── database/  # Gestion base de données locale\n│   │   ├── di/        # Injection de dépendances\n│   │   ├── helpers/   # Classes helper\n│   │   ├── services/  # Services partagés\n│   │   └── utils/     # Utilitaires divers\n│   ├── data/          # Couche de données\n│   │   ├── datasources/\n│   │   ├── models/    \n│   │   └── repositories/\n│   ├── domain/        # Couche de domaine (logique métier)\n│   │   ├── entities/\n│   │   ├── repositories/\n│   │   └── usecases/\n│   ├── modules/       # Modules fonctionnels\n│   │   ├── app/       # Configuration app\n│   │   ├── civact/    # Module Signalement\n│   │   ├── city_ai_guide/ # Module Découverte\n│   │   ├── sante_map/ # Module Santé\n│   │   ├── osm_helper/ # Module OSM\n│   │   └── carto_prix/ # Module Prix\n│   ├── widgets/       # Widgets réutilisables\n│   ├── app.dart       # Configuration app\n│   ├── init.dart      # Initialisation\n│   └── splash.screen.dart # Écran de démarrage\n├── blocobserver.dart  # Observateur BLoC\n└── main.dart          # Point d'entrée principal\n```\n\n## 🚦 Démarrage\n\n### Prérequis\n\n- **Flutter SDK** (3.29.3 ou supérieur)\n- **Dart SDK** (3.6.0 ou supérieur)\n- **Android Studio** / **VS Code** avec extensions Flutter\n- **Compte Firebase** (gratuit)\n- **Compte Mapbox** (gratuit avec quota)\n- **Compte Google AI Studio** (pour Gemini API)\n\n### Installation\n\n1. **Clonez le dépôt :**\n   ```bash\n   git clone https://github.com/BorisGautier/kartia.git\n   cd kartia\n   ```\n\n2. **Vérifiez votre environnement Flutter :**\n   ```bash\n   flutter doctor\n   ```\n\n3. **Installez les dépendances :**\n   ```bash\n   flutter pub get\n   ```\n\n4. **Créez un fichier `.env` à la racine du projet :**\n   ```env\n   # Mapbox\n   MAPBOX_API_KEY=your_mapbox_api_key_here\n   ```\n\n5. **Configurez Firebase :**\n   ```bash\n   dart pub global activate flutterfire_cli\n   flutterfire configure\n   ```\n\n6. **Générez les fichiers de localisation :**\n   ```bash\n   dart run intl_utils:generate \n   ```\n\n7. **Lancez l'application :**\n   ```bash\n   flutter run \n   ```\n\n## 🔄 Mode Hors-ligne\n\nKartIA est conçu pour fonctionner dans des zones à connectivité limitée :\n\n- **Stockage local** des données via Drift (SQLite)\n- **Mise en cache** des tuiles de carte pour les zones fréquentes\n- **Upload différé** des contributions lorsque la connexion est rétablie\n- **Fonctionnalités dégradées** mais toujours utilisables sans connexion\n- **Synchronisation intelligente** en arrière-plan\n\n## 🌐 Multilingue\n\nKartIA est disponible en plusieurs langues :\n- 🇫🇷 **Français** (langue principale)\n- 🇬🇧 **Anglais**\n- 🚧 **Prochainement :** Arabe, Swahili, Wolof\n\nPour ajouter une nouvelle langue, consultez notre [guide de traduction](TRANSLATION_GUIDE.md).\n\n## 🤝 Contribuer\n\nLes contributions sont les bienvenues ! Consultez [CONTRIBUTING.md](CONTRIBUTING.md) pour les directives.\n\n### Domaines où nous avons besoin d'aide\n\n- **🎨 UI/UX** : Amélioration des interfaces utilisateur\n- **🌍 Traductions** : Ajout de nouvelles langues\n- **📱 Optimisation offline** : Amélioration de l'expérience hors-ligne\n- **📚 Documentation** : Tutoriels, guides d'utilisation\n- **🧪 Tests** : Couverture de tests unitaires et d'intégration\n- **🗺️ Données cartographiques** : Enrichissement des données OSM\n- **🤖 IA** : Amélioration des algorithmes de classification\n\n### Comment contribuer\n\n1. **Fork** le projet\n2. **Créez** votre branche feature (`git checkout -b feature/AmazingFeature`)\n3. **Committez** vos changements (`git commit -m 'Add some AmazingFeature'`)\n4. **Push** vers la branche (`git push origin feature/AmazingFeature`)\n5. **Ouvrez** une Pull Request\n\n## 🛣️ Roadmap\n\n| Période | Milestone | Statut |\n|---------|-----------|--------|\n| **Q3 2025** | MVP avec module Signalement et base cartographique | 🚧 En cours |\n| **Q4 2025** | Alpha avec intégration IA et module Découverte | 📋 Planifié |\n| **Q1 2026** | Beta avec modules SantéMap et OSM Helper | 📋 Planifié |\n| **Q2 2026** | Version 1.0 avec module CartoPrix | 📋 Planifié |\n| **Q3 2026** | Extensions communautaires et APIs publiques | 📋 Planifié |\n\n## 🔧 Configuration et Structure\n\n### Structure du Projet\n```\nkartia/\n├── android/                 # Configuration Android\n├── ios/                     # Configuration iOS\n├── lib/                     # Code Dart principal\n├── cloud/                   # Fonctions Firebase Cloud\n├── test/                    # Tests unitaires et d'intégration\n├── docs/                    # Documentation\n│   ├── architecture/        # Documentation d'architecture\n│   ├── api/                 # Documentation API\n│   └── screenshots/         # Captures d'écran\n├── assets/                  # Ressources statiques\n│   ├── images/              # Images et icônes\n│   ├── map_styles/          # Styles de cartes personnalisés\n│   └── translations/        # Fichiers de traduction\n├── .github/                 # Configuration GitHub\n│   └── workflows/           # GitHub Actions\n└── scripts/                 # Scripts de build et déploiement\n```\n\n### Configuration des APIs\n\n#### Mapbox\n1. Créez un compte sur [Mapbox](https://www.mapbox.com/)\n2. Obtenez une clé API\n3. Ajoutez-la à votre fichier `.env`\n4. Configurez les styles de carte dans `assets/map_styles/`\n\n#### Google Gemini API\n1. Créez un compte sur [Google AI Studio](https://makersuite.google.com/)\n2. Créez une clé API pour Gemini\n3. Ajoutez-la à votre fichier `.env`\n\n## 🧪 Tests\n\n### Tests unitaires\n```bash\nflutter test\n```\n\n### Tests d'intégration\n```bash\nflutter drive --target=test_driver/app.dart\n```\n\n### Tests de widget\n```bash\nflutter test test/widget_test/\n```\n\n### Couverture de code\n```bash\nflutter test --coverage\ngenhtml coverage/lcov.info -o coverage/html\n```\n\n## 📱 Variantes de Build\n\n```bash\nflutter run\n```\n\n### Production\n```bash\n# Android\nflutter build appbundle --release\n\n# iOS\nflutter build ipa --release\n```\n\n## 🚀 Déploiement\n\n### Android (Google Play Store)\n```bash\nflutter build appbundle --release\n```\n\n### iOS (App Store)\n```bash\nflutter build ipa --release\n```\n\n### Déploiement automatique\nLes déploiements sont automatisés via GitHub Actions. Consultez `.github/workflows/` pour plus de détails.\n\n## 📊 Métriques et Monitoring\n\n- **Firebase Analytics** : Suivi de l'usage\n- **Crashlytics** : Rapports de crash\n- **Performance Monitoring** : Surveillance des performances\n- **Remote Config** : Configuration à distance\n- **Graylog** : Centralisation des logs\n\n## 🔒 Sécurité\n\n- **Chiffrement** des données sensibles\n- **Authentification** sécurisée via Firebase\n- **Validation** côté serveur avec Cloud Functions\n- **Respect** du RGPD et des données personnelles\n\n## 📄 Licence\n\nCe projet est sous licence Apache 2.0 - voir le fichier [LICENSE](LICENSE) pour plus de détails.\n\n### Résumé de la licence\n- ✅ **Usage commercial** autorisé\n- ✅ **Modification** autorisée\n- ✅ **Distribution** autorisée\n- ✅ **Utilisation privée** autorisée\n- ⚖️ **Attribution** requise\n- ⚖️ **Conservation** des notices de licence\n- 🛡️ **Protection** contre les litiges de brevets\n\n## 🙏 Remerciements\n\n- **[Flutter Team](https://flutter.dev/)** pour le framework exceptionnel\n- **[Firebase Team](https://firebase.google.com/)** pour l'infrastructure backend\n- **[Mapbox](https://www.mapbox.com/)** pour les outils cartographiques\n- **[OpenStreetMap](https://www.openstreetmap.org/)** pour les données cartographiques libres\n- **[Google AI](https://ai.google.dev/)** pour l'API Gemini\n- **[Communauté open source](https://github.com/BorisGautier/kartia/graphs/contributors)** pour les contributions\n- **Organisations africaines** pour le feedback et les tests terrain\n\n## 📞 Support \u0026 Contact\n\n- **Issues GitHub** : [Signaler un bug](https://github.com/BorisGautier/kartia/issues)\n- **Discussions** : [Forum communautaire](https://github.com/BorisGautier/kartia/discussions)\n- **Email** : me@borisgautier.com\n- **Twitter** : [@BorisGautier](https://twitter.com/BorisGautier)\n\n## 📈 Statistiques\n\n![GitHub commit activity](https://img.shields.io/github/commit-activity/m/BorisGautier/kartia)\n![GitHub last commit](https://img.shields.io/github/last-commit/BorisGautier/kartia)\n![GitHub contributors](https://img.shields.io/github/contributors/BorisGautier/kartia)\n\n---\n\n⭐ **Si ce projet vous intéresse, n'hésitez pas à lui donner une étoile et à le partager !**\n\n*Conçu avec ❤️ pour améliorer la cartographie participative en Afrique*\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Made%20in-Cameroon%20🇨🇲-success\" alt=\"Made in Cameroon\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/For-Africa%20🌍-yellow\" alt=\"For Africa\"\u003e\n\u003c/p\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fborisgautier%2Fkartia","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fborisgautier%2Fkartia","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fborisgautier%2Fkartia/lists"}