Recently, the growing communication service, Discord, added the functionality to display what Spotify song a user is currently playing in their status, and enable others to stream the same song with ease by utilizing Spotify's API.
We had the idea of applying the underlying concept of that interesting feature a step further.
People enjoy sharing the entertainment they consume with their friends: from Spotify music to Netflix shows and YouTube videos, it's common for these things to come up in every-day conversation. "Hey did you see...?" "Did you listen to that new...?"
With that in mind, we wanted to create an app focused around this purpose: users can share what media they're enjoying with their followers, and can join others in what they are watching/listening in real-time.
What it does
BingeWorthy allows you to follow other users to deliver a simple feed of music and comments and share what you are listening to with others. Essentially, we enable people to enjoy online entertainment together, rather than apart in a social media context. As opposed to having to negotiate with the service itself in order to share with friends, BingeWorthy creates an all-encompassing way to share media from several sources. Instead of going out of your way to hunt down the song, video, etc., BingeWorthy shows it right to you, ready to share in one click.
Essentially, we enable people to enjoy online entertainment together, rather than apart in a social media context.
How we built it
We used Facebook's React Native library for the front end and Amazon Web Services for the backend. The backend was created in NodeJS and uses various AWS infrastructure such as Cognito, DynamoDB, Lambda, and API Gateway - our Rest API is hosted through Lambda, as we have a completely serverless architecture.
We built the feeds using getstream which allowed us to save some time on the backend front.
Challenges we encountered
- We set off with our sights set on using Firebase's realtime database to sync users online status and their current activity. However, we found that our use-case was not very well supported in React Native and ultimately had to abandon implementing our real-time status to focus on our core functionality of sharing music to a feed.
Accomplishments that we're proud of
- Although we could not achieve our full vision, none of us are very experienced with React Native so we are proud that we were able to deliver the core functionality in a working app, although it lacks the finesse we would have liked to have given it (provided more time) - moreover we are happy that we have gained experience with a technology that is widely used in the marketplace today (ie. Instagram)
- We are also satisfied with how we were able to efficiently collaborate using Git and GitLab's issue tracking system allowing us to develop at a more rapid pace.
What we learned
- Having researched these technologies in-depth and tried to apply them, we have learned a lot about what kind of cloud-computing software is available and what scenarios they could be applied to. For instance, we were unaware that Firebase offers realtime databases or what a real-world use case of a realtime database was.
What's next for BingeWorthy
The original plan for the app was to encompass a wide variety of media, from video games to movies and TV. We wrote BingeWorthy in such a way that it is completely extensible, so our immediate next steps are to expand to other services that have well-supported APIs, such as YouTube. From there we can implement other solutions to enable users to have a seamless experience with services such as Netflix which lack an API - for instance, our current plan is to use pre-existing databases (/ APIs) which track Netflix shows to allow users to search for their content as we cannot directly access it or to use web-scraping.
Aside from that, we will work towards implementing Firebase's realtime technology to add the ability to view what other users are doing in real-time; much like how Facebook Messenger displays your online status to others in your friends list; and allowing others to join you in streaming whatever media you are currently playing.