Plateforme de voyage auto-hébergée basée sur des données géographiques souveraines

La plupart des applications de voyage optimisent la vitesse : trajets les plus courts, lieux populaires, parcours prévisibles. Haydov prend le contrepied en favorisant le slow travel, en mettant en avant les détours, les lieux inattendus et les points d’intérêt hors des circuits classiques.
J’ai conçu et développé Haydov comme une plateforme entièrement self-hosted, basée sur OpenStreetMap, avec une couche IA capable de suggérer des détours pertinents en fonction du contexte du voyage.
Le système repose sur des données géographiques souveraines : routage, géocodage et indexation sont maîtrisés de bout en bout, sans dépendance à une API commerciale.
Fonctionnalités principales
- Routage et géocodage self-hosted (Valhalla + Pelias)
- Suggestions enrichies par IA pour explorer au-delà de l’itinéraire prévu
- Pipeline complet de données géographiques (de l’extract brut à la production)
- Application mobile pour visualisation et interaction avec les trajets
- Système extensible pour intégrer de nouvelles sources de données
Résultats clés
- Construction d’une stack cartographique complète sans dépendance externe
- Ingestion et indexation automatisées de données géographiques à grande échelle
- Pipeline modulaire permettant l’ajout de nouveaux providers via plugins
- Expérience mobile centrée sur l’exploration et le slow travel
Architecture
Haydov est un système distribué polyglotte (Rust, Node.js, Go, mobile) :
- Pipeline de données (Rust + WebAssembly)
Téléchargement et traitement des données géographiques via des plugins dynamiques - Import & indexation (Node.js + RabbitMQ + gRPC)
Orchestration de l’ingestion dans un stack Pelias auto-hébergé (Elasticsearch) - Moteur de routage (Valhalla)
Calcul d’itinéraires basé sur les mêmes données OSM - Application mobile (React Native / Expo)
Visualisation des trajets et intégration des suggestions IA
Points techniques clés
- Système de plugins WebAssembly (interface WIT) pour les providers de données
- Pipeline d’ingestion en streaming avec stockage compatible S3
- Orchestration event-driven via RabbitMQ
- Déploiement Kubernetes avec environnements reproductibles (Nix, Tilt, Kustomize)
- CLI en Go avec interface terminal pour gérer l’environnement local
- Encodage/décodage de polylines pour optimiser la transmission des routes
Mon rôle
Responsabilité end-to-end :
- Design de l’architecture et du pipeline de données
- Développement des services principaux (Rust downloader, Node.js importer)
- Mise en place de l’orchestration et du déploiement
- Développement de l’application mobile et des outils développeur