Skip to main content

Maps Frontend

A ground-up React/TypeScript rewrite of the public-facing trail-finder map at maps.clevelandmetroparks.com, replacing a decade-old jQuery application at the same production URL — designed and built solo, including the full production cutover.

Get Directions across four travel modes with routing that prefers the park system's own trail network, client-side full-text search, and a project-wide accessibility contract enforced by automated ESLint and Playwright/axe-core testing gates.

Engineered a two-track URL-state system that separates rapid map-position updates from React Router-driven feature-selection state, a six-provider composition graph with hooks that throw if used outside their provider, and a parallel mobile bottom-sheet UI with iOS safe-area and gesture handling built alongside the desktop sidebar.

  • React 18
  • TypeScript
  • Vite
  • Mantine v6
  • Mapbox GL / react-map-gl
  • TanStack Query v4
  • FlexSearch
  • React Router v6
  • Playwright + axe-core

Visit: maps.clevelandmetroparks.com