Inspiration
As outdoor enthusiasts, we were all interested in getting into backpacking, but we didn't know where to start to find trails perfect for our skill level and know-how. We'd all hiked before and are active, valuing our physical and mental health, so had Strava accounts with records of past hikes, runs, and walks. With access to this data, we created a trail recommender based on a user's experience, using statistics from their Strava activities.
What it does
So, instead of asking users to guess their fitness level, we extract it from Strava with Strava's API and Google Gemini. Data from Strava's log of past activity is processed into a JSON alongside user inputted preferences like hike location/distance away from current location and relative hike difficulty. Gemini then analyzes the user's capabilities and preferences against potential trails to recommend a tailored route that is both safe and challenging. Our website provides a summary of the user's past activity along with a description of the recommended trail complete with statistics, permit information (if applicable), and an embedded AllTrails map.
Challenges we ran into
We faced challenges embedding a working link into our website, usage limitations with Strava's API, and testing efficiently during development
The version of the Strava API we used can only pull data from one user at a time, so we had trouble testing the site as we had to wait for usage limits to reset. To work around this, we tried to deauthorize each user immediately after pulling their data, but this only worked some of the time.
We also struggled a lot with getting AllTrails to embed consistently since it is hard to find a matching trail link from the trail name returned by Gemini. We experimented with other methods of pulling the link, including a manual web search of the trail name but this was still imperfect.
We also had issues compiling the website locally, so we relied on a system with a single one of our developers rendering any changes we made. This was very inefficient and could have been avoided by being more deliberate with our file structure and workflow from the start.
Accomplishments that we're proud of
We're proud of creating a website for the first time. We also proud that we were able to effectively integrate two different APIs into this website involving code in both JavaScript and Python.
What we learned
There are a million things that we would do differently next time, but the main thing is better planning.
While we still don't know how we _ should _ have organized our project, getting a better understanding of the flow of server.js, input and output structure of our APIs, and the html structure of our website before attempting to design the full site would have definitely saved us time.
Log in or sign up for Devpost to join the conversation.