Inspiration
State College has a strong hiking tradition, with ridges, state forests and long-distance trails starting just outside town. Information about these trails is scattered across club pages, forums, PDFs and word of mouth. On AllTrails, a trail is labeled only Easy, Moderate or Hard, and the details that matter here are often missing, such as whether you can get there without a car or whether it's hunting season. We built HikingPSU to bring that information together in one place and to give Penn State hikers a community of their own. We want to start in Happy Valley and grow it across Pennsylvania.
What it does
- AI trail planner: users ask hiking questions, and our AI agent, powered by the Gemini API, answers them.
- Five clear levels: every trail gets a level from 1 to 5, and every level explains itself.
- Local safety notes: weather, sunset time and hunting-season reminders.
- Official library: manager-published maps, PDFs and route lines.
- Badges and reviews: check in at the trailhead, rate the hike, and build a badge wall.
How we built it
Grading. We turn distance and climb into equivalent miles:
$$ \text{effort} = \text{miles} + \frac{\text{feet of climb}}{500} $$
Levels: L1 < 3, L2:3–5.5, L3:5.5–9, L4:9–14, L5:14+. A trail gets +1 level for rocky footing, scrambles, stream crossings or easy-to-lose trails, and every level lists its reasons.
Data. 52 trails: 12 entered by hand and 40 imported from OpenStreetMap, with climb from Open-Meteo elevation data. All are labeled as estimates until hikers verify them.
AI agent. An LLM with tool calls (search_trails, get_weather, hunting_season_note, official resources). A guardrail drops any trail its search didn't return, so it can't invent trails. It stays on topic, and per-user rate limits plus a daily budget keep costs safe.
Stack. React + Leaflet on AWS Amplify, FastAPI on Render, MongoDB, and Auth0 for sign-in.
Challenges we ran into
- Getting distances right: OpenStreetMap gives one-way length, so out-and-back trails were rated far too easy (28 of 52 came out as L1). We switched to round-trip distance and climb.
- Four people, one repo: merge conflicts and an accidental push to
mainled us to a PR-only workflow with branch protection. - Deployment: our first frontend host wouldn't deploy teammates' commits, so we moved to AWS Amplify.
- Abuse-proofing the AI: guest limits first keyed off a proxy IP that changed on every request; we switched to Cloudflare's client IP.
What we learned
A difficulty rating is only useful if it explains itself. We also learned to treat an AI agent like any other API that needs limits, and that real users (thanks, PSOC!) shape a product more than our assumptions do.
What's next
A mobile app for on-trail check-ins, a community space for group hikes and trip reports, seasonal badge challenges, and a pilot with the Penn State Outing Club, whose ratings will calibrate our levels.
AI-Use
We used AI coding assistants (Claude Code and Codex) during development. The demo narration is an AI voice.
Log in or sign up for Devpost to join the conversation.