Inspiration

Casual gymgoers and beginners are overwhelmed when searching for a gym. Existing tools return raw lists with no sense of fit — you're left manually comparing price, distance, and ratings with no guidance on which one actually works for your life.

What it does

GymMatch fixes this with a lifestyle-based recommendation algorithm. You tell it how you live — mostly busy, free on weekends, or mostly free — and it ranks nearby gyms accordingly. Mostly Busy users get proximity weighted highest (because a gym you can't get to doesn't count). Mostly Free users get quality and price prioritized. The algorithm pulls live data from the Google Places API and scores every gym across three factors: distance, rating quality, and price range.

Key features:

  • GPS location on load, with a manual text fallback if denied
  • Lifestyle dropdown with conditional inputs: Mostly Busy users set a time window; Mostly Free users select their free days
  • Weighted scoring algorithm with lifestyle-specific weights, price priority input, and hotel gym demotion
  • Skeleton loading animation → ranked gym cards with rank overlay, star rating, price range, and distance
  • Inline accordion detail view with Google Maps button and website button
  • "No results" state with a one-click wider-radius retry

Built with: Python, Flask, JavaScript, HTML/CSS, Google Places API (New), Google Geocoding API

Share this project:

Updates

Submission history