Inspiration

How many events are hosted around your university campus each day? How many do you actually know about? Or maybe you know about them and choose not to go because you aren’t comfortable stepping out of your comfort zone. University is a critical time for development, and we might regret not utilizing all our resources when we’re here. The high concentration of young people figuring out what they want to do with their lives is a breeding ground for self-discovery – if you so choose to take the opportunities. In other words, most university students are not touching enough grass, and as a result, student orgs also are not reaching their turnout potentials.

Our solution: gamification and a convenient platform for seamlessly fitting events into your busy schedule.

What it does

Grasshopper is an application that gamifies and simplifies attending university events by allowing users to attain points through ‘grass blocks,’ as well as having a leaderboard system to promote a sense of friendly competition. In doing so, users are incentivized to attend events in real life and “touch grass,” while student orgs benefit from having an increased headcount and a single catalog for promoting their events.

How we built it

We used Reflex, a Python web framework that allowed us to build our frontend and backend in one pure Python app. We initially used Turso as our database provider running libSQL, but eventually moved to Reflex’s built in SQLite database, and also relied on their hosting service for launching the application.

Authentication is handled by Google OAuth, which allows university students to create an account and log in seamlessly.

Challenges we ran into

Reflex is a relatively new framework, so support and documentation was more limited than established web frameworks like React and Vue. Despite this, we were able to get most of the app functioning well. On the database side, we ran into a few difficulties that cost a lot of time to investigate. One of our team members was unable to connect to the database because of a bug with the database driver. As a result, this meant they could not do any development on their laptop. To circumvent this, we had them configure a coding environment on a team member's laptop, and do their development by using VSCode to SSH into the team member's laptop.

Additionally, towards the end of completing a basic version of our app, our database kept crashing and returning a websocket error. We had 4 hours left until submission and could not even log into the app anymore. We discovered that the database was crashing because we were not properly pooling database connections and were essentially DDOS’ing our database with the website. Eventually, we overcame this challenge by cleaning up some database methods and moving to Reflex's default SQLite database.

Accomplishments that we're proud of

We are proud of our entire app! We learned tons of new technologies and were able to string them together into a working app. We were also very close to implementing GeminiAPI, but we just didn’t have time. Learning this web framework to the competency of creating an entire application in just 20 hours was also an amazing accomplishment for us.

What we learned

As a team, we learned how to quickly and strategically digest new documentation while working with the tools we had in our toolbelt from our previous experiences. Some of our team members also had less experience with creating an app from scratch, and this challenge definitely contributed to cementing our instinct when it came to creating a new app, choosing a database, deploying to the cloud, etc. Some of our team members also hadn’t worked with a full stack web framework before, so they had to learn how the architecture differed from a traditional SPA and REST API application.

What's next for Grasshopper ᕕ( ᐛ )ᕗ

There is a lot of creative freedom for further development of the app, and university students would very much benefit from the concept. We are excited to develop this into an actual application because it addresses current market gaps and has a good foundation. Grass blocks were also a reference to Minecraft, hopefully striking nostalgia in most of our users. Some improvements we have in mind, aside from upgrading the UI/UX: fully implement AI itinerary generation with Google Calendar sync, add a regenerate button for displaying profile grass blocks in new configurations, add campus ambassadors that can review and approve event applications, and add cute animations for each grass block and flower acquired.

Built With

Share this project:

Updates