Skip to content

Repository files navigation

Velorki

app Android flows iOS flows web Crowdin Licence: AGPL-3.0-only Website: velorki.com App Store

Velorki: ride where the signal ends. The planner on two phones, dark and light.

Plan the ride, find the café, follow the turns, and do all of it where the signal ends. Free, open source, built on OpenStreetMap.

Download a region once and the whole app works without a network: the map, the routing, the place search and the spoken turns. No account, no ads, no paywall on the ride itself, and no server in the loop unless you ask for one. Everything about using it is on velorki.com. A Flutter app for iOS and Android. What it does:

  • Routing on the phone. A Dart port of the BRouter engine routes on downloaded 5°×5° tiles, with touring, road, gravel, MTB and direct profiles, up to three alternatives, elevation profile and surface statistics. A BRouter server is optional, for areas with no tiles.
  • Loops. "A 60 km round trip from here via the lake": candidates are generated and scored on length, climbing, surface and repeated roads.
  • Place search offline. Each routing tile brings a search index of its places, streets with house numbers, and points of interest: cafés, drinking water, toilets, repair stations, shelters, bike shops, campsites, hotels, passes, peaks, viewpoints, stations, landmarks. Typing "water" lists the nearest taps by distance; typos are corrected from the index itself. Online search through Photon is one tap away, and the first choice where no tile is downloaded.
  • Offline maps. Vector map areas from OpenFreeMap saved per region, with the CyclOSM cycling overlay online.
  • Turn-by-turn. Turn banner and spoken cues while recording along a route; leave it and you choose what happens: a way back onto the plan, a new route to the destination, or only the direction back. Compass or north-up follow modes.
  • Recording. Runs in the background with a foreground notification on Android and a live activity on iOS; survives the app being killed; battery saver dims the screen and coarsens the GPS; ride pages with elevation, speed, splits and a speed-coloured track.
  • Sensors, all optional. Heart rate, cadence and power on every fix, from an Apple Watch (a companion app streams the pulse and shows the ride and the next turn on the wrist), from Bluetooth straps, speed and cadence sensors and power meters, or from Apple Health and Health Connect. Nothing asks for a permission until you switch a source on in Settings.
  • Files and services. GPX and FIT import and export through the share sheet and open-with; Strava upload and route import; RideWithGPS routes and trips both ways; links to share a route.
  • Assistant. A sentence like "40 km, mostly gravel, a café stop" becomes a plotted route, through a hosted model behind a relay that holds the key.
  • Metric or imperial units; every string is localisable.

Everything on the phone is free, for everyone, for good: planning, loops, offline maps and routing, search, navigation, recording, ride stats, GPX and FIT files. The routing data and the search index are mirrored for you at no charge. "Velorki Plus" is a small subscription only for the parts that need our servers or a partner account: the Strava and RideWithGPS connections, the assistant and link sharing. The code for all of it is here, so you can also run your own and skip the subscription entirely.

Status

Everything above is implemented and tested: unit and widget tests on every push, emulator and simulator suites on Android 12, 15 and 16 and on iOS, and the routing port reproduces the Java server byte for byte on a recorded corpus. Nothing is in the stores yet.

Not yet done: the store accounts and partner API registrations, the relay and the tile mirror deployment, and iOS release signing. docs/OPEN_ITEMS.md lists every such item.

Layout

Directory Contents
app/ the Flutter app and its pure-Dart packages (app/packages/)
web/ velorki.com: the website and the relay (OAuth token exchange, AI relay, share links) in one Next.js app
brouter/ routing profiles and the map-data updater for the BRouter routing server
deploy/ self-hosting with Docker Compose or systemd
docs/ architecture, self-hosting, privacy, store checklist
tools/ the BRouter test oracle and the gazetteer builder

Design in one paragraph

As much as possible runs on the device: the routes, the rides, the loop generator, the place search and the routing itself. The server side is optional — a stock BRouter routing server for areas without downloaded tiles, and a small relay that only does what an open-source app cannot: keep the Strava and RideWithGPS client secrets, call the language model, and store shared links. No accounts, no cloud database. See docs/ARCHITECTURE.md.

Building

mise install in the repository root installs Flutter, Java and Node at the pinned versions. Then see app/README.md and web/README.md.

Self-hosting

Velorki needs no backend. docs/SELF_HOSTING.md says what you can run yourself anyway — a tile host, a routing server, the relay — and deploy/README.md is the step-by-step for the last two. Forks must rebrand, see TRADEMARK.md.

Licence

AGPL-3.0-only, for every directory above — one licence, no exceptions. Modified versions have to flow back: whoever distributes a changed app, or serves a changed relay or website, publishes the source under the same licence, and keeps a "Based on Velorki (velorki.com) by Orkitec" line in its about screen or website footer, see ADDITIONAL_TERMS.md. The name, the logo and the app icon stay reserved, see TRADEMARK.md.

Credits

Map data © OpenStreetMap contributors, ODbL. Routing by BRouter. Map tiles by OpenFreeMap. Online search by Photon.

About

Plan and ride bike routes. Free, open-source Flutter app on OpenStreetMap with bike routing, smart loops, ride recording, Strava and RideWithGPS exchange.

Topics

Resources

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages