Niko and I are both longtime music fans and enjoy listening to music while working together. Unfortunately, we often run into the issue of wasting time queueing, selecting, and deciding on music to listen to. While brainstorming for DeltaHacks, we decided it would be really cool if we could develop a piece of software which would not only allow us to listen to the same songs simultaneously, but also learn our shared tastes and choose songs for us. Thus, Virtual DJ was born.

What it does

Virtual DJ is made for teams of people which want to listen to music together. Users are able to add tracks through a web interface, sourced from YouTube. These tracks are added to a queue which is visible to everyone in the lobby. Virtual DJ plays the tracks in sync for each user, meaning everyone on the team is listening to the songs at the exact same time.

Virtual DJ learns more about the group's music tastes as new songs are added, meaning that it is actually able to intelligently suggest songs it thinks the group will enjoy!

Slack integration is included in Virtual DJ, users are able to message the virtualdj user on their Slack channel with a song title, and virtualdj will automatically add the song to the queue.

How we built it

We built the front end for Virtual DJ using vanilla HTML, CSS, and a bit of jQuery. The back end is built in node.js, using different modules for the various APIs we interfaced with.

The YouTube API is used to source the tracks, the Last.FM API for song information, and the RTM API for Slack integration.

Accomplishments that we're proud of

When we went into the project, we didn't expect to have time to implement all our intended features. Features like song suggestion and Slack integration were planned to be added at a later date, but we're happy to report both have been successfully implemented!

What's next for Virtual DJ

We plan to continue development of Virtual DJ. We hope to remake the front end to be more responsive and look better on smaller screens. We also hope to support larger groups, and add support for user sign-up and saved teams.

Share this project: