https://github.com/borisgautier/kartia
KartIA est une super-application mobile combinant intelligence artificielle & cartographie pour permettre aux citoyens africains de signaler, découvrir et contribuer à leur environnement local.
https://github.com/borisgautier/kartia
firebase flutter gemini mapbox openstreetmap
Last synced: 4 months ago
JSON representation
KartIA est une super-application mobile combinant intelligence artificielle & cartographie pour permettre aux citoyens africains de signaler, découvrir et contribuer à leur environnement local.
- Host: GitHub
- URL: https://github.com/borisgautier/kartia
- Owner: BorisGautier
- License: other
- Created: 2025-05-17T08:54:54.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-01T06:03:30.000Z (about 1 year ago)
- Last Synced: 2025-10-11T14:12:40.699Z (9 months ago)
- Topics: firebase, flutter, gemini, mapbox, openstreetmap
- Language: Dart
- Homepage: https://kartia.app
- Size: 4.51 MB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# KartIA
**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 :**
```bash
git clone https://github.com/BorisGautier/kartia.git
cd kartia
```
2. **Vérifiez votre environnement Flutter :**
```bash
flutter doctor
```
3. **Installez les dépendances :**
```bash
flutter pub get
```
4. **Créez un fichier `.env` à la racine du projet :**
```env
# Mapbox
MAPBOX_API_KEY=your_mapbox_api_key_here
```
5. **Configurez Firebase :**
```bash
dart pub global activate flutterfire_cli
flutterfire configure
```
6. **Générez les fichiers de localisation :**
```bash
dart run intl_utils:generate
```
7. **Lancez l'application :**
```bash
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](TRANSLATION_GUIDE.md).
## 🤝 Contribuer
Les contributions sont les bienvenues ! Consultez [CONTRIBUTING.md](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](https://www.mapbox.com/)
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](https://makersuite.google.com/)
2. Créez une clé API pour Gemini
3. Ajoutez-la à votre fichier `.env`
## 🧪 Tests
### Tests unitaires
```bash
flutter test
```
### Tests d'intégration
```bash
flutter drive --target=test_driver/app.dart
```
### Tests de widget
```bash
flutter test test/widget_test/
```
### Couverture de code
```bash
flutter test --coverage
genhtml coverage/lcov.info -o coverage/html
```
## 📱 Variantes de Build
```bash
flutter run
```
### Production
```bash
# Android
flutter build appbundle --release
# iOS
flutter build ipa --release
```
## 🚀 Déploiement
### Android (Google Play Store)
```bash
flutter build appbundle --release
```
### iOS (App Store)
```bash
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](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
- **[Flutter Team](https://flutter.dev/)** pour le framework exceptionnel
- **[Firebase Team](https://firebase.google.com/)** pour l'infrastructure backend
- **[Mapbox](https://www.mapbox.com/)** pour les outils cartographiques
- **[OpenStreetMap](https://www.openstreetmap.org/)** pour les données cartographiques libres
- **[Google AI](https://ai.google.dev/)** pour l'API Gemini
- **[Communauté open source](https://github.com/BorisGautier/kartia/graphs/contributors)** pour les contributions
- **Organisations africaines** pour le feedback et les tests terrain
## 📞 Support & Contact
- **Issues GitHub** : [Signaler un bug](https://github.com/BorisGautier/kartia/issues)
- **Discussions** : [Forum communautaire](https://github.com/BorisGautier/kartia/discussions)
- **Email** : me@borisgautier.com
- **Twitter** : [@BorisGautier](https://twitter.com/BorisGautier)
## 📈 Statistiques



---
⭐ **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*
---