How this relates to the past
- With how accessible information is now, we think that people actually get dragged down by decision fatigue and are more likely to do nothing. We think thatin the past, specifically before the advent of the internet, people were more likely to go on sidequests, because you actually had to go somewhere to figure out what it's about (e.g., go to a zoo they saw in the newspaper). We wanted to let our users experience the sort of spontaneity in an easy-to-use app, and also share their spontaneous adventures with their friends.
Over-engineered version of:
- We think our app is similar to geocaching in the sense that it gets people to go outside to random locations. The twist here is that we basically turn their local area into a huge collection of geocaches using location services and AI, and we can give them something interesting to do for each one.
Inspiration
- We were inspired by the seemingly mundane activities that actually turn out to be super fun and refreshing (going on a drive with your friends, taking a walk around the neighborhood).
- We were inspired by BeReal and how it gets people to take pictures of random parts of their lives. We wanted to create another way for people to share random moments, but this time give them a prompt for a fun local activity, and get them to post about it after finishing.
What it does
- We want our app to help people realize there's more to do around their local area than they realize (you don't have to travel around the world to have fun!). It is designed to encourage people to go on spontaneous sidequests and share their journey with their friends. When you create a side quest, it will generate a customized mission based on the user's time constraint, quest category, and points of interest close to the user's location. Once they accept the quest, they can start taking photos during it and share these photos in a post after the quest is complete. The app also tracks the number of quests the user has done in each category to provide them with a fun stats page in their profile.
How we built it
- We used React Native, Expo, and Firebase to quickly create the base for a mobile social media app. The AI location-based quest feature was built with the Geoapify API to return local points of interest, and the Gemini API to create quests based on these POIs.
Challenges we ran into
- Since it was one of our first times coding anything web-related using Node, we actually had a very hard time getting npm to work on one of the computers. It had a weird issue where PowerShell could not open as an administrator, so we couldn't run the command to allow Windows to execute scripts. Because of this, the app could not be demoed on one of our devices, so we had to find another way. We ended up setting up remote desktop on that laptop so we could log into a remote PC that had everything set up. That way, we could finally code in parallel to iterate more quickly.
- The AI-generated quest also took some time to debug. We had an issue where the Gemini response was getting cut off, but we didn't know why. Turns out we had set a token limit in our call that was truncating the JSON output. We increased this limit by 4x, and the app worked fine from there on.
- The location-based POIs were also initially only returning coffee shops/cafes (probably because of the sheer amount of cafes nearby). This was an issue because even when we asked for a fitness quest, it would still tell us to go to a cafe. To fix this, we customized what POIs the API would search for based on the category the user set (so no cafes for fitness). We also increased the number of locations it would return from 10 to 20, so it had a more diverse selection of places to choose from.
- Firebase Firestore only allowed us to store images up to 1mb, so we initially were not able to upload the images we took on our phone. We had to compress our images before sending them to firestore so they could be stored properly
Accomplishments that we're proud of
- We tried using several new technologies this time (React Native, Firebase, Geoapify), so we are proud of the amount we learned about these.
- We are proud that both of us were able to contribute to major elements of the app
What we learned
- We learned how to use Firebase to make a login, post, and follow social media app
- We learned how to use React Expo's location feature with Geoapify to return local points of interest
- We learned how to specify the output of the Gemini API and add safeguards to check that the output is valid
What's next for Sidequest
- Daily sidequest, and you can't see other people's sidequests without doing your own (sort of like BeReal. We didn't do this because it would have been annoying to demo)
- Add in a mystery mode where the app doesn't tell you what you are going to fully, but it just gives you one step to take at a time (e.g., walk outside -> walk to the mall -> walk to gong cha)
- Create a monetary spending category so the user can choose how much they want to spend on the sidequest
Log in or sign up for Devpost to join the conversation.