Even though we meet many people everyday(maybe less now due to COVID-19) we miss a lot of opportunities to actually talk to these people that may have a lot in common with us due to a variety of reasons. Although not everyone is a social animal, we sometimes don't talk to people out of fear. Hobbyist facilitates this initial start of social interactions where it is hardest for most people.
What it does
The Hobbyist app connects users with similar hobbies that cross paths with each other. Once logged in a user can input their hobbies. After that a user search for other users nearby. When searching we send location data periodically from the GPS of the device to map out where the user is. This location data is used to match the user with other users with similar hobbies that have been reasonably close to the user. Once matched, the app contains a messaging system so that users are not forced to share personal information.
The idea of this is to allow users to meet other users that we cross paths with and have similar hobbies but don't ever meet. This can apply to students who don't know anyone in their classes or even weightlifters at the gym who are looking for a gym buddy.
How we built it
For our backend we used Google's Compute Engine to host our express server and our postgresql database. Our login system returns a JSON Web Token to keep users authenticated. To match users we calculate a geohash and search for others in the same hash or the 8 surrounding geohashes. We filter this list of users based off their distance and hobbies for each user. Once matched we create a channel that users can optionally join to talk.
For the frontend we used React Native, benefited by the Expo framework. We pulled from numerous React Native libraries for features such as an integrated chatroom, and the Google Maps API to generate a map based off geolocation.
Challenges we ran into
A lot of the things we wanted to do required complex logic for out database which made our SQL query builder almost obsolete since we ended up having to write a lot of raw SQL. Some of our calls also had complex logic such as filtering similar hobbies for each user or making sure users get a single channel invite.
Due to the nature of Expo, we had to scrap some of the integration with other API's we were interested in. Additionally, this was our first time working with some of these technologies. This unfamiliarity coupled with our progress made this experience one we can be extremely grateful to have had.
Accomplishments that we're proud of
With this being our second hackathon we are proud of how much more we were able to get done compared to our first hackathon. The scope of this project is much larger than our previous ones and we were able to add a good amount of features that we wanted.
What we learned
This project allowed us to work with new things that we have not before. This was the first time we made an app and also the first time we used React Native. Other features of the project such as our authentication and chat system was the first time we have created anything similar.
What's next for Hobbyist
We plan to add features to increase user interactions. These come in the form of hobby based events, meetups and hotspots for people.
Try It out