skip to content

WheelGo!

[completed]OpenRouteService, Node.js, Reactgithub ↗demo ↗

Project Overview

WheelGo is a web application designed to help identify steep sections in routes for accessible public transport planning in Ankara and throughout Türkiye. Unlike Google Maps and similar mapping solutions, WheelGo specifically highlights steep inclines that may be challenging for people who use mobility aids.

Key problem solved: Current mapping solutions don't notify users about steep inclines, making it difficult for people with mobility challenges to plan accessible routes.

Technology Stack

  • Frontend: React (Vite)
  • Backend: Node.js
  • Routing: OpenRouteService API
  • Elevation data: OpenRouteService elevation endpoint

How It Works

The user enters an origin and a destination. The backend calls OpenRouteService to fetch a walking / wheelchair-suitable route, then enriches the route with elevation samples — typically one sample every ~20 meters of path. Each segment's slope is computed as (elevation_delta / horizontal_distance) * 100.

Segments whose slope exceeds the user-configurable threshold (default 5%) are flagged in red on the map. The frontend renders the route as a Leaflet polyline with per-segment color coding.

What Makes It Different

OpenRouteService alone can route around steep slopes if you ask it to — they offer a "wheelchair" profile. But that profile is binary: a segment is either acceptable or not. WheelGo surfaces every steep segment so the user can decide for themselves. If your wheelchair can handle a 6% grade for a short stretch, you might still take the steeper-but-shorter route. WheelGo gives you the data to make that call.

What I Learned

  • Accessibility-focused mapping is an underexplored UX space. Most mapping apps treat "walking" as a single mode. The reality is that walking varies wildly by person, weather, and slope tolerance.
  • OpenRouteService's free tier is generous enough for a student project (~2000 requests/day) but you have to cache aggressively — re-routing the same origin/destination pair burns quota fast.
  • Leaflet's polyline rendering is fine up to ~10k segments; past that, you want Leaflet.Canvas or vector tiles.
  • The Türkiye-specific use case mattered. Ankara is hilly. Google Maps' "walking time" estimates for Ankara are based on flat-ground assumptions and are often wildly wrong.