Self-Hosted Travel Platform with Sovereign Geographic Data

Most travel apps optimize for speed—shortest routes, popular landmarks, predictable paths. Haydov takes the opposite approach: enabling slow travel by surfacing meaningful detours and lesser-known places along the way.
I designed and built Haydov as a fully self-hosted travel platform powered by OpenStreetMap, with an AI layer that suggests contextual deviations from a planned route—encouraging exploration beyond predefined itineraries.
The system is built on sovereign geographic data: routing, geocoding, and indexing are all owned end-to-end, with no dependency on commercial APIs.
Core Capabilities
- Self-hosted routing and geocoding (Valhalla + Pelias)
- AI-driven suggestions to enrich travel routes with nearby points of interest
- Full geographic data pipeline from raw extracts to production services
- Mobile app for route visualization and interaction
- Extensible provider system for adding new geographic data sources
Key Results
- Built a complete mapping stack with no reliance on commercial APIs
- Enabled automated ingestion and indexing of global geographic datasets
- Designed a modular pipeline supporting multiple data providers via plugins
- Delivered a mobile-first experience for exploratory travel
Architecture Overview
Haydov is a polyglot distributed system spanning Rust, Node.js, Go, and mobile clients:
- Data Pipeline (Rust + WebAssembly)
Downloads and processes geographic data using pluggable provider components loaded at runtime - Import & Indexing (Node.js + RabbitMQ + gRPC)
Coordinates ingestion into a self-hosted Pelias geocoding stack backed by Elasticsearch - Routing Engine (Valhalla)
Provides route computation using the same OSM-derived data - Mobile App (React Native / Expo)
Displays routes and integrates AI-driven suggestions for exploration
Technical Highlights
- Designed a WebAssembly plugin system (WIT interface) for geographic data providers
- Built a streaming ingestion pipeline with S3-compatible storage and multipart uploads
- Implemented event-driven orchestration via RabbitMQ
- Deployed full stack on Kubernetes with reproducible environments (Nix + Tilt + Kustomize)
- Developed a Go CLI with terminal UI for managing local environments
- Implemented polyline encoding/decoding for efficient route serialization
My Role
Owned the system end-to-end:
- Designed architecture and data pipeline
- Built core services (Rust downloader, Node.js importer)
- Implemented orchestration and deployment setup
- Developed mobile application and developer tooling