πŸ‡©πŸ‡ͺ Bike Parking across All of Germany

100 000+ parking locations from OpenStreetMap β€” bundled offline, available instantly, anywhere in Germany. Tap the map to place a custom pin and navigate there, use address search powered by Nominatim, MapLibre vector tile map, BRouter on-device routing, 5 cycling profiles, favorites, dark mode, and 8 languages included.

Why VeloSpot?

πŸ”

Address Search

Type any German address into the floating search bar to get up to 5 live Nominatim suggestions. Tap a result to drop a pin on the map and start in-app BRouter navigation straight to that address.

πŸ“Œ

Tap-to-Place Custom Pin

Tap any empty spot on the map to drop a blue custom pin. The address is resolved instantly via Nominatim reverse geocoding and a bottom sheet lets you start in-app bike navigation directly to that exact location.

πŸ‡©πŸ‡ͺ

All of Germany

100 000+ bicycle parking locations from OpenStreetMap β€” pre-bundled as a SQLite asset, available offline from the very first launch.

⚑

Viewport-Based Loading

Only the markers visible in the current map area are queried. Scroll from Flensburg to Munich without any slowdowns.

🏠

Fully Offline

All parking data is bundled inside the APK. No network call is needed to find and browse parking spots.

πŸ“¬

Lazy Address Lookup

Tap a marker and its address is resolved automatically via Nominatim β€” cached permanently so subsequent opens are instant.

πŸ—Ύ

MapLibre Vector Map

Silky-smooth vector tile rendering via MapLibre and OpenFreeMap Liberty style β€” no API key needed, sharp at every zoom level, and ready for custom dark-mode styles.

πŸ“

Interactive Map

Browse bike parking spaces on an intuitive vector map with clear markers and quick detail access.

❀️

Favorites

Save the parking spots you use most often and launch navigation directly from the favorites list β€” even if they are outside the current viewport.

🌐

8 Languages

Switch between German, English, French, Italian, Portuguese, Luxembourgish, Dutch, and Spanish via a flag-based picker β€” the choice is remembered across app restarts.

πŸŒ™

Dark Map Mode

Enable dark mode and the entire map switches to a bundled dark vector-tile style that reuses the same OpenFreeMap tiles β€” no extra tile provider, with brighter, higher-contrast markers for night use.

πŸ—‚οΈ

Toggle Map Layers

Show or hide pin categories independently β€” parking spots, favourites, and saved places β€” via an intuitive layers sheet. The selection persists across restarts.

⭐

Saved Places

Save any tapped location as a named favourite. Saved places appear as persistent green star markers and live in the favourites list with navigate and show-on-map actions.

🧭

In-App Bike Navigation

Calculate bike routes directly inside the app and follow a live route overlay without switching to an external map app.

πŸ—ΊοΈ

BRouter Offline Routing

Routes calculated entirely on-device via the embedded BRouter engine β€” no internet needed after the one-time ~200–250 MB segment download. Choose from 5 cycling profiles: Trekking, Fast, Shortest, MTB, and Gravel.

πŸ‘οΈ

Navigation Focus

While navigation is active, non-destination markers appear smaller, lighter gray, and more transparent so your target stands out.

Built With Modern Tech

Kotlin
Jetpack Compose
Clean Architecture
Hilt DI
Retrofit + Moshi
MapLibre (Vector Tiles)
OpenFreeMap Liberty Style
Room / SQLite Asset
BRouter Offline Engine
OSRM Online Fallback
Nominatim Geocoding (Reverse + Forward)
Play Services Location
pyosmium Pipeline
MVVM Pattern
Material Design 3

Built for Everyday Cycling β€” Anywhere in Germany

VeloSpot bundles the complete OpenStreetMap bicycle parking dataset for Germany into a pre-populated SQLite database. All 100 000+ spots are available offline from first launch, with smooth viewport-based loading and automatic address resolution.

  • Address search β€” type any German address, tap a result, navigate
  • Tap-to-place custom pin β€” drop a pin anywhere, get the address, navigate there
  • 100 000+ locations from OpenStreetMap β€” bundled offline
  • Viewport-based loading keeps performance smooth at any zoom level
  • Addresses resolved via Nominatim on first tap, cached permanently
  • Favorite spots highlighted with red map markers
  • Dedicated favorites sheet with direct navigation
  • BRouter offline routing β€” on-device, no internet after setup
  • 5 cycling profiles: Trekking, Fast, Shortest, MTB, Gravel
  • In-app bike route overlay with hours + minutes travel time
  • Navigation focus mode with dimmed non-target markers
  • Location recenter button and current-position marker
  • Dark mode toggle directly in the map menu β€” including dark map tiles
  • Toggle pin layers β€” show/hide parking, favourites, and saved places
  • Save any tapped location as a named favourite (saved places)
  • 8-language picker with persistent flag-based selection
  • MapLibre vector tiles via OpenFreeMap β€” sharp at any zoom, no API key
πŸ‡©πŸ‡ͺ

100 000+ Locations Β· Fully Offline

OpenStreetMap Β· Room Asset DB Β· Nominatim (Reverse + Forward Geocoding) Β· MapLibre Vector Tiles Β· BRouter Offline Routing Β· OSRM Fallback

App Preview

VeloSpot map view with bike parking markers

Explore the map

City-wide or country-wide β€” browse 100 000+ parking spots across Germany.

VeloSpot address search bar with live suggestions

Address search

Type any German address to get live suggestions powered by Nominatim and navigate straight there.

VeloSpot found location with navigation sheet

Navigate to any location

Tap any spot on the map to drop a custom pin, get the address automatically, and start in-app bike routing.

VeloSpot parking space detail sheet with navigation and favourites

Inspect parking details

See capacity, address, and coverage, then jump straight into navigation.

VeloSpot favourites list with saved bike parking spots

Manage favourites

Save your most-used spots and start navigation directly from the favourites sheet.

VeloSpot language picker with flag icons

Switch languages

Choose from 8 languages in-app via the flag-based language picker.

VeloSpot map in dark mode with dark vector tiles

Dark map mode

A bundled dark vector-tile style that reuses the same OpenFreeMap tiles β€” the whole map turns dark alongside the app theme, with higher-contrast markers.

VeloSpot layers sheet to show or hide pin categories

Toggle map layers

Show or hide each pin category independently β€” parking spots, favourites, and saved places β€” from an intuitive layers sheet. Your choice is remembered.

Ready to Cycle Anywhere in Germany?

Clone the project, build the Android app, and enjoy 100 000+ parking spots offline β€” plus tap-to-place custom pins, address search via Nominatim, MapLibre vector tile map, BRouter on-device routing, 5 cycling profiles, favorites, multilingual support, and dark mode.