Under the hood

A consumer app,
engineered like infrastructure.

RouteFeed is being built to production quality before launch: clean architecture, failure states designed up front, and place data the product owns outright.

124-layercustom basemap, light + dark generated from one style pipeline
~40k placesimported per market from OpenStreetMap, enriched during import
1 identityper real-world place. Aliases stop provider data from forking
$0 in-marketgeocoding. Searches hit RouteFeed's own catalog, not a paid API

Catalog-first search: RouteFeed owns its place data

Instead of renting search from a geocoding API forever, every named place in a market is imported once, given a permanent RouteFeed identity, and indexed for instant, typo-tolerant search. External geocoders become a shrinking fallback.

sourceOpenStreetMapbulk regional extract
importImporteridempotent · enriched at import
ownPlace cataloglocations + alias index
serveSearch index5 to 50 ms, geo-ranked
userInstant resultsevery hit is our doc

A new market means running the importer for that region. Nothing else changes.

Every provider is behind a swap-tested interface

The rule: replacing the map engine, the database, or a video CDN may only touch its adapter, never the product code. These boundaries exist in the codebase today.

MapRendererMapLibre today · swappable
SearchServiceown catalog → index → geocoder fallback
RoutingServiceon-device engine (Valhalla planned)
LocationRepositoryFirestore geohash queries
MediaUploadServicestorage and CDN under evaluation
AuthRepositoryFirebase Auth · guest → real account linking

Stack

Flutter Riverpod Firebase Auth Cloud Firestore Cloud Functions App Check MapLibre GL OpenStreetMap Algolia Valhalla planned CarPlay / Android Auto planned

The entire UI reads from one theme system. The coral accent is reserved, in the app and on this site, for exactly one thing: the moment you decide to go.