Inspiration
Everybody knows it, being at a bar with friends, but somehow the taste of music in the bar does not match the taste of music of the group being there. As it is quite a lot of work to balance everybody's taste of music by hand the idea cam up to use Spotify's web API to find the perfect mix for everybody who's attending. CrowDJ tries to solve this problem by automatically matching peoples desires and generating recommendations based on that. The goal was to build an app that does not annoy the user but helps to influence the music selection.
What it does
CrowDJ can be used by everyone in the bar by simply opening a link in the browser. After a short introduction and entering the own name, favourite genres can be selected in an easy and intuitive way, which in addition makes fun. After entering the desires, the system is generating a set of all desired genres. This set is updated based on the presence of the people participating. This method has the advantage that it does not need much user interaction while keeping a high level of control of the users tastes. To date leaving the bar must be done by clicking on leave, in a later version usage of geolocation is possible.
How we built it
Among all the present individuals we use our and Spotify's algorithms to build a list of songs to play, that fits the taste of everybody in the best possible way. When you leave the bar, your preferences will be removed from the pool and the list will be updated. The overall architecture only consists of a server, a spotify client and a browser interface. The server generates the playlist and is controlling the spotify client via the spotify API. The Browser interface is used, so that the users can enter their preferences. The Server is written in Java utilizing the framework Spark. The Client is created with React JS utilizing matter.js for building a fancy and fun UI.
Challenges we ran into
- Playing a set of songs on the spotify API and controlling the client playing it in the desired order
- Genre selection in a cool, fancy and welcoming way
- New technologies the team members did not know before like Spark, React and matter.js
- CORS, since it's quite unusual how this mechanism works
Accomplishments that we're proud of
- Having a nice and handy UI, which lets the user understand very fast, what is happening
- Implementing the whole system in a very short time while preserving quality
- Good team spirit :D
What we learned
- A lot of new technologies
- How long it is possible not to sleep
What's next for CrowDJ
- Integrate it with the first bar
- Integrate geolocation and automatic leaving + joining to automatically add and remove genres
Log in or sign up for Devpost to join the conversation.