Music, in addition to human connection, makes people feel great! So why not combine the two?
What it does
OurMusic gives users the ability to share music in a common space. Users can listen to their favorite songs in sync with their friends, colleagues and even strangers! OurMusic can also be used to stream songs privately.
How we built it
We made use of the Google Cloud Platform, by implementing user authentication with FireAuth and using Firebase's Realtime database for storing user data and syncing music. Express.js and Node.js were used to build a middle-tier and React was used for the front-end. Additionally Octave's TouchTunes Songs API was used for music searches and audio streaming. Lastly, MaterialUI was used to facilitate the development of a clean and friendly user interface.
What each technology was used for:
- Firebase: Firebase's authentication and realtime database were used to create and manage users as well as their data/audio syncing
- Express.js: Express was used as a middle-tier to handle requests from the front-end to Octave's TouchTunes Songs API
- React: React, with the help of MaterialUI was used to build a clean and responsive front-end
- TouchTunes Songs API: Used for searching songs and streaming audio
Challenges we ran into
- CORS policy errors when trying to access responses from the TouchTunes API from the front-end
- Syncing audio using Firebase's Realtime Database among several users in the same listening session
Accomplishments that we're proud of
- Built a secure user login
- Nice UI
- Working application
- Successful audio syncing
What we learned
- How to use Octave's TouchTunes Songs API
- How to resolve CORS Policy response errors by building a middle-tier to handle requests and responses
What's next for OurMusic
Add a friends feature, allowing users to save friends and invite them seamlessly to listening sessions. In addition, allow users to seek and exchange admin permissions in a shared listening session. It would be favorable to add a queue feature to allow users to select songs that will play when the current song is over.