Back to projects
#02Feb 20264 min read

NearbyRoutes

Find walking and cycling routes near your location with smart filtering.

ReactMapsAPI
CursorChatGPT

The Concept

You're in a new city (or bored in your own) and want to find interesting places nearby -- a park, a viewpoint, a good coffee spot. Google Maps shows you a list. NearbyRoutes shows you a route that connects them.

The app finds attractions, cafes, parks, and shops near your location and builds walking routes between them, displayed on an interactive map with turn-by-turn directions.

Architecture

NearbyRoutes is a native Android app built with Kotlin and Jetpack Compose.

Place Discovery

The app queries multiple APIs to find interesting places nearby:

  • Overpass API -- queries OpenStreetMap for tagged places (cafes, parks, viewpoints, shops)
  • OpenTripMap API -- curated tourist attractions and points of interest
  • Yandex Places API -- additional local business data

Results are deduplicated and categorized into groups: attractions, food & drink, nature, shopping, and more.

Map & Routing

Places are displayed on a Yandex MapKit map. When you select a destination, the app calculates a walking route using Yandex's routing engine and displays it with turn-by-turn directions.

Configurable Search

A settings screen lets you adjust:

  • Search radius -- from 1 km to 15 km
  • Place categories -- filter what types of places to show
  • Transportation mode -- walking or cycling

Tech Stack

  • Kotlin -- Android native
  • Jetpack Compose -- declarative UI with Material 3
  • Yandex MapKit -- map rendering, search, and routing
  • Retrofit -- HTTP client for API calls
  • DataStore -- persistent settings
  • Play Services Location -- Fused Location Provider for GPS
  • Coil -- image loading for place photos
  • Overpass, OpenTripMap, Nominatim, OSRM -- open data and routing APIs

Design

The UI follows Material 3 guidelines with a clean, map-centric layout. The bottom sheet pattern shows place details without leaving the map view. Animations and transitions make the experience feel fluid.

No track playing

331 tracks available

Queue · 0 tracks