Vue d'ensemble d'AfriMap Engine
AfriMap Engine est une API de cartographie open-source construite pour l'Afrique de l'Ouest. Elle remplace Google Maps API avec un stack auto-hébergé, moins cher, plus rapide, et doté d'une connaissance locale supérieure.
Pourquoi AfriMap ?
Zero coût API
Tout le stack est open-source et auto-hébergé. Pas de facturation par requête comme Google Maps (qui coûte ~640 000 FCFA/mois pour une flotte de 500 véhicules). Vous payez uniquement votre serveur.
Connaissance locale
Quartiers informels (Adjamé Liberté, Abobo Gare), landmarks (« en face du Maquis Chez Tonton »), marchés avec jours d'ouverture, pharmacies de garde. Données que Google ne connaît pas.
Mode hors-ligne
Navigation complète sans réseau. Les tuiles carte + les données de routing sont téléchargeables par commune (~60-100 MB). Critique pour les zones à couverture réseau instable.
Voix locales
Instructions de navigation en français, anglais, et bientôt dioula et baoulé grâce à Coqui TTS fine-tuné sur des enregistrements locaux.
Architecture du système
AfriMap suit un pattern Monolithe Modulaire + Microservices d'infrastructure. Le code applicatif (gateway Go) est un seul binaire organisé en modules domaine. Les services lourds (routing, search, tiles) tournent en conteneurs Docker indépendants.
Client (Web / Mobile / Backend)
|
v
┌─────────────────────────────────┐
│ API Gateway (Go + Chi) │
│ auth · rate-limit · CORS · log │
│ │
│ ┌─────────────────────────────┐ │
│ │ Domaines │ │
│ │ routing · geocoding │ │
│ │ places · navigation │ │
│ │ tiles · eta · admin │ │
│ └─────────────────────────────┘ │
└──────┬──────┬──────┬──────┬──────┘
│ │ │ │
┌────┘ ┌───┘ ┌───┘ ┌───┘
v v v v
Valhalla Pelias Martin TTS
(C++) (Node) (Rust) (Python)
:8002 :4000 :3000 :5500
│ │ │ │
└───┬───┘ │ │
v v v
PostgreSQL Redis
+ PostGIS (cache, rate-limit,
+ H3 positions temps réel)
:5432 :6379
Services d'infrastructure
- Valhalla — Moteur de routing C++. Itinéraires, matrices, isochrones, map matching.
- Pelias — Géocodeur modulaire. Forward, reverse, autocomplete avec données locales.
- Martin — Serveur de tuiles vectorielles Rust. Sert des MVT depuis PostGIS.
- PostgreSQL + PostGIS — Base spatiale avec extension H3 pour l'indexation hexagonale.
- Redis — Cache, rate limiting, positions GPS temps réel des chauffeurs.
- TTS (Edge + Coqui) — Synthèse vocale pour la navigation.
Gateway Go (Monolithe Modulaire)
- Clean Architecture — Chaque domaine suit entity → usecase → port → adapter → handler.
- Middleware — Auth (X-AfriMap-Key), rate limit (Redis sliding window), CORS, logging (zerolog), metrics (Prometheus).
- Isolation — Les domaines ne s'importent jamais entre eux. Communication via interfaces port.
- Pas de réseau interne — Les appels inter-domaine sont des appels de fonction (ns), pas des requêtes HTTP (ms).
Ce que vous pouvez construire
VTC & ride-hailing
Routing multi-modal, ETA trafic, navigation vocale, suivi GPS temps réel, dispatch par matrice de distances.
Livraison dernier km
Optimisation TSP multi-stops, géocodage d'adresses informelles, isochrones pour zones de couverture, mode hors-ligne.
Cartes interactives
Tuiles vectorielles haute performance, 3 styles (jour/nuit/satellite), bâtiments 3D, POI locaux, overlay trafic.
Sources de données
AfriMap fusionne trois couches de données pour une couverture maximale :
| Source | Contenu | Volume |
|---|---|---|
| OpenStreetMap | Routes, bâtiments, POI, limites admin | Extrait Geofabrik Côte d'Ivoire (~120 MB) |
| Overture Maps | Bâtiments, POI enrichis, adresses | 2,3 milliards de bâtiments, 54 M POI monde |
| Données locales AfriMap | Quartiers informels, landmarks, marchés, pharmacies de garde | GeoJSON manuels + crowdsource chauffeurs |
| Traces GPS HopRide | Vitesses par segment routier, par heure, par jour | TimescaleDB agrégé par cellule H3 |
Stack technologique
| Couche | Technologie | Pourquoi |
|---|---|---|
| API Gateway | Go + Chi router | Rapide, typé, même langage que le backend HopRide |
| Tiles | Martin (Rust) | Le plus rapide serveur de tuiles vectorielles, natif PostGIS |
| Routing | Valhalla (C++) | Multi-modal, instructions narratives, hors-ligne possible |
| Géocodage | Pelias (Node.js) | Modulaire, supporte sources custom + données locales |
| Base spatiale | PostgreSQL + PostGIS + H3 | Standard de l'industrie, indexation hexagonale |
| Cache | Redis 7 | Positions GPS temps réel, cache tuiles, rate limiting |
| Rendu carte | MapLibre GL JS / Native | Fork open-source de Mapbox, web + mobile |
| TTS | Edge TTS + Coqui XTTS v2 | Gratuit, voix custom pour langues locales |
| Conteneurisation | Docker + Docker Compose | Tout containerisé, une seule commande pour lancer |
Surface API
Toutes les API sont versionnées sous /v1/, retournent du JSON (GeoJSON pour les données spatiales), et suivent des patterns compatibles Google Maps pour faciliter la migration.
Routing
Itinéraires, matrices, isochrones, map matching, optimisation TSP
POST /v1/route · POST /v1/matrix · GET /v1/isochrone
Géocodage
Forward, reverse, autocomplete avec biais de proximité
GET /v1/geocode · GET /v1/geocode/reverse
Places
Recherche POI, proximité, catégories, données locales
GET /v1/places/search · GET /v1/places/nearby
Tuiles
Tuiles vectorielles MVT, styles jour/nuit/satellite
GET /v1/tiles/{z}/{x}/{y}.pbf
Navigation
Turn-by-turn, voix, landmarks, rerouting automatique
POST /v1/navigate · POST /v1/navigate/voice
ETA
Temps d'arrivée ajustés au trafic via modèle ML
GET /v1/eta
Par où commencer
Démarrage rapide
De zéro à un itinéraire affiché sur carte. Cinq étapes, trois lignes de SDK.
FondamentalAuthentification
Comment obtenir et utiliser votre clé API, les plans tarifaires, et les limites de débit.
MigrationDepuis Google Maps
Guide de migration pas-à-pas avec correspondance endpoint par endpoint.