Inspiration
I built Ride Finder because planning a weekend ride, hike, or social activity near Central New Jersey was scattered across cycling club calendars, Meetup groups, RSS feeds, iCal calendars, and individual event pages. I wanted one morning-check page that answers practical questions quickly: when does it start, how far is the drive, will it be too hot or rainy, and is it a ride, hike, or social event where I can meet people?
What it does
Ride Finder aggregates nearby rides, hikes, and social events into a bilingual static web app. Each activity card highlights the event time, expected weather at the start time, heat and UV cues, driving distance, RSVP counts when available, and a rule-based recommendation score.
The app supports separate filters for rides, hikes, and social events; a 7-day date view; automatic hiding of expired same-day events; sorting by time, driving distance, or recommendation score; Chinese/English UI switching; and scheduled data refreshes through GitHub Actions and Cloudflare Pages.
How I built it
The project uses a Python data pipeline and a plain HTML/CSS/JavaScript frontend. The pipeline gathers public and authorized event data, deduplicates overlapping events, geocodes start locations, estimates driving distance, enriches each activity with weather from Open-Meteo, scores the result, and writes a static web/rides.json file.
The frontend reads rides.json directly from Cloudflare Pages, so the deployed app stays fast and inexpensive. GitHub Actions refreshes the data on a schedule, commits the updated JSON, and deploys the static site.
Codex was my main engineering partner. I used it to inspect and edit the codebase, implement connectors, wire up GitHub and Cloudflare deployment, debug Meetup OAuth/JWT authorization, run tests, and iterate on the mobile UI. GPT-5.6 helped shape the product decisions: how to separate rides, hikes, and social events; what information should be most visible; and how to make weather and heat risk understandable.
Challenges I ran into
The hardest part was data quality. Local clubs expose different formats, and Meetup data requires current API authorization for reliable scheduled access. Some calendars are public, some are gated, and some sources return incomplete location or RSVP details.
Weather was also subtle. A daily forecast is not enough for outdoor planning, so the app focuses on weather at the event start time and highlights heat, rain, wind, and UV risk.
Accomplishments that I am proud of
The site is genuinely useful for my own week. It combines sources I used to check manually, makes event time and weather easy to scan, and runs as a simple static site with an automated refresh pipeline.
What I learned
I learned that building a useful AI-assisted app is less about one big generation step and more about turning a fuzzy personal workflow into concrete product decisions, then patiently connecting the data, deployment, privacy, and UI pieces.
What's next
Next I want to add more official club calendars, improve routed driving-time accuracy, add optional notifications for high-scoring activities, and keep expanding Meetup and local community coverage.
Built With
- cloudflare-pages
- codex
- css
- github-actions
- gpt-5.6
- html
- ical
- javascript
- meetup-graphql
- open-meteo
- python
- rss
Log in or sign up for Devpost to join the conversation.