Introduction

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

Mobilité

VTC & ride-hailing

Routing multi-modal, ETA trafic, navigation vocale, suivi GPS temps réel, dispatch par matrice de distances.

Logistique

Livraison dernier km

Optimisation TSP multi-stops, géocodage d'adresses informelles, isochrones pour zones de couverture, mode hors-ligne.

Urbanisme

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 :

SourceContenuVolume
OpenStreetMapRoutes, bâtiments, POI, limites adminExtrait Geofabrik Côte d'Ivoire (~120 MB)
Overture MapsBâtiments, POI enrichis, adresses2,3 milliards de bâtiments, 54 M POI monde
Données locales AfriMapQuartiers informels, landmarks, marchés, pharmacies de gardeGeoJSON manuels + crowdsource chauffeurs
Traces GPS HopRideVitesses par segment routier, par heure, par jourTimescaleDB agrégé par cellule H3

Stack technologique

CoucheTechnologiePourquoi
API GatewayGo + Chi routerRapide, typé, même langage que le backend HopRide
TilesMartin (Rust)Le plus rapide serveur de tuiles vectorielles, natif PostGIS
RoutingValhalla (C++)Multi-modal, instructions narratives, hors-ligne possible
GéocodagePelias (Node.js)Modulaire, supporte sources custom + données locales
Base spatialePostgreSQL + PostGIS + H3Standard de l'industrie, indexation hexagonale
CacheRedis 7Positions GPS temps réel, cache tuiles, rate limiting
Rendu carteMapLibre GL JS / NativeFork open-source de Mapbox, web + mobile
TTSEdge TTS + Coqui XTTS v2Gratuit, voix custom pour langues locales
ConteneurisationDocker + Docker ComposeTout 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.

Par où commencer