Wayfinder

Wayfinder is a SwiftUI navigation app that turns natural-language travel preferences into routes.

Setup

  1. Open Wayfinder.xcodeproj in Xcode.
  2. Copy Config.xcconfig.example to Config.xcconfig.
  3. Fill in the services you want to use in Config.xcconfig. The Xcode target automatically loads this gitignored file through Wayfinder.xcconfig.
  4. The supported settings are:
    • VALHALLA_BASE_URL (defaults to the live public Valhalla endpoint)
    • VALHALLA_API_KEY (optional; for hosted Valhalla providers)
    • GRAPHHOPPER_API_KEY
    • OPENROUTESERVICE_API_KEY
    • OPENROUTER_API_KEY

Secrets are loaded at runtime from environment variables or Info.plist substitutions and are never committed.

Architecture

  • SwiftUI + MVVM
  • SwiftData for profile and saved-route persistence
  • Protocol-based repositories with dependency injection
  • MapLibre Native 6.28 with bundled OpenStreetMap/terrain/satellite/hybrid styles
  • OpenStreetMap raster tiles and Nominatim search
  • Valhalla routing for driving, cycling, and walking, with GraphHopper and OpenRouteService failover
  • Route time, distance, and Valhalla-reported toll, highway, ferry, and access warnings
  • Native transit directions when transit is selected
  • AI-requested waypoint stops and GraphHopper custom-model preferences
  • OpenRouter structured preference interpretation with a deterministic offline parser
  • Account-free launch with a one-time, locally persisted feature tour

The map rendering boundary is isolated in OpenStreetMapView, while all route, place, and prompt logic stays independent of the renderer.

Built With

Share this project:

Updates