HappyTrailsWhat's Open Up the Trail
A phone app for the Swamp Rabbit Trail that shows riders the coffee, bikes and food they can reach from the trail: what's open right now, how far it is off the trail, and the way there. Businesses can claim their listing and post offers.
Built with React, TypeScript, Vite, Tailwind CSS, MapLibre GL, Ferrostar (navigation), OpenStreetMap, Supabase, Capacitor (iOS), Playwright, Vitest, Remotion (video), Vercel.
Open Now
Today's hours on every place, so riders only stop where the door is open
Off-Trail Distance
Each place measured from the trail, with the time it takes by bike
Voice Directions
Turn-by-turn navigation with spoken prompts, one hand on the bars
One Codebase
Web app, iPhone app and landing page from the same project




What it is
Riders on the Swamp Rabbit Trail in Greenville have no easy way to tell which nearby places are open, how far off the trail they are, or how to get there and back. HappyTrails puts the trail on a map with every nearby place on it. Pick a trailhead or share your location, and the app lists what is up the trail in the direction you are riding, with today's hours and the time by bike. Tap a place to get turn-by-turn directions with voice prompts. Business owners can claim their listing and post offers. I built the web app, an iPhone build, the landing page with its waitlist, and a 92-second product video.
The problem
Trail users decide where to stop while they are moving, usually with one hand on the bars. General map apps search the whole city, show places that are miles from the trail, and do not know which way you are riding. The businesses along the trail have no simple way to reach the riders passing their door.
What I built
I built a mobile-first React app around a MapLibre map of the trail. Places and opening hours come from OpenStreetMap, and each place is measured against the trail itself, so the list shows how far off the trail it is and how long it takes by bike. Directions use the Ferrostar navigation engine with spoken turn prompts. Supabase holds rider accounts, saved places, offers and the waitlist, with row-level security on every table. Businesses claim a listing and prove they own it, either in person or automatically when their sign-in email matches the business's website domain, with guards against shared and chain domains. Capacitor wraps the same code as an iPhone app.
What happened
A working web app, an iPhone build in testing, and a landing page for riders, businesses and cities, all on one codebase. The first working version took 8 days from the first commit. Playwright end-to-end tests cover the map, the place list, place details, routing, navigation, accounts and business claims, and database tests check the access rules.
What it changed
- Gives trail businesses a direct way to reach riders passing their door
- Offers give riders a reason to stop and give businesses a reason to join
- The landing page speaks to riders, businesses and cities, and its waitlist asks which group you are in
Who it fits
- A rider six miles in looking for coffee that is open and close to the trail
- A family picking a trailhead with ice cream and bike rentals nearby
- A bike shop or cafe posting an offer for riders on the trail today
- A city or parks department showing what the trail does for local business
- Places ranked by position along the trail and by riding direction, not by straight-line distance
- Turn-by-turn navigation with the Ferrostar engine and spoken prompts
- Business ownership checks: verified in person, or matched automatically from the owner's email domain, with guards for shared hosts and chain domains
- Row-level security on every Supabase table, covered by database tests
- Capacitor iPhone build with background location and keep-awake during navigation
- Playwright end-to-end tests that fake GPS and routing to test navigation without leaving the desk
Want something like this built?
Bring the idea or the app. Step 1 is a free 15-minute fit call. Step 2 is a paid discovery session, $500, that ends in a written plan. Step 3 is a fixed quote for the build, or you take the plan and build it yourself.