Inspiration

As students who experience a lack of study spaces available on campus, we noticed that there were a lot of vacant study spaces unknown to most students. Whether it be a room in the library, or a couple of benches outside the dorms, we believe every space can be utilized to foster academic growth through group studying and tutoring. Oftentimes, there would be completely vacant spaces no one knew about, while it was completely packed everywhere else. We wanted to eliminate this problem to ensure ALL study spaces around campus stay regulated in their use and occupied at all times! This inspired us to create StudyBuddy, an app made for students, by students. This mobile application enables students to host student run group study sessions, and tutors to host their tutoring sessions in a way that keeps everyone posted on what's happening all around campus!

What we learned

Building this application taught us how to build full stack mobile applications. We learned how to use React Native to develop the front end while connecting it with the Express Backend Database. We learned how to create and host SQL databases on servers online, and how to update them in real time. We discovered how to use API keys to access the Google Maps API. Attempted to work with Kubernetes to deploy a backend container instances in a scalable way within Google Cloud. Then we learned that Kubernetes might be overkill and learned how to deploy the database container in Google Cloud Run instead in a free and scalable way. Learning how to work with Google Cloud to deploy our backend container instance took so freaking long, and we were absolutely ecstatic when we got the database hosted online! This entailed learning how to properly build and push a container image to the Docker Hub registry in a custom public repository, then loading this public image into the Google Cloud Artifact Registry, and finally deploying this image as a container in a Google compute instance that is hosted in the cloud. We also used graphic design to create a unique logo and customized elements for our user interface.

What it Does

Our app provides a live map view of all study sessions occurring on campus! Furthermore, students and tutors can book spaces ahead of time, register for sessions, and even add a new study spot they discover to our ever-growing database! Users can not only identify new locations, but actively collaborate with other students to make the most out of those spaces. It encourages social gathering and learning through collaboration with peers.

How we built it

We began by first discussing our tech stack, the minimal feature set, designing the app, and setting up the repository for our React Native front-end. We then created the Express backend sqlite database repository, created a Docker container instance for it, and found a hosting service (Google Cloud) for hosting a running instance of the Docker database container using google Cloud Run with continuous deployment as the source repository for the image is updated. Throughout the implementation steps, we were learning by reading the documentation for the various API's used, such as Express.js, Docker, and the Google Cloud API's.

Challenges we ran into

We ran into several challenges while building this app since it was many of our first times embarking on such a task. For example, we faced a challenge in hosting the database online in a scalable way. We were able to resolve this issue by containerizing the backend, and then trying to utilize Kubernetes on Google Cloud, but then swapping over to Google Cloud Run to spawn our containerized database across a load balanced cluster of servers. This allows it to regulate traffic effectively, as well as enable our database to exist on the cloud and accessible from any device running the app.

What's next for StudyBuddy

We eventually want to add a feature where we keep track of capacity for every space, and update it as people show up. We also want users to be able to create groups within the app with people they know to register for spaces, introducing a Social aspect to the app. We want to create texting channels for each space, kind of like Discord! A rating system for the different study spaces present in the app would also be nice to add down the road.

Share this project:

Updates