In two weeks, a group of friends and I are going on a road trip. In the past, some of us have put in few songs while others have put in hundreds. With HighwayHarmony, I hope to create an app that creates a more even play of the songs in the cue.

What it does

The app will allow for each 'player' to add a song under their name, and the program distributes the songs played by each person. It connects with the host's Spotify account and once the song and player have been recorded, determines which songs to put in the cue. Each member will have an equal chance of being selected to have their selections put on. So the number of additions does not affect the probability of getting songs played

How we built it

We built this project using Python, the Spotify API, and Kivy for python.

Challenges we ran into

Spotify has a webpage dedicated to developers so they have easy access to API. Once we were on the website, it was a struggle to figure out how to use this information as it came in odd forms. Eventually, we were able to work through this, and the next issue was figuring out how to create code that read the Spotify data and added the songs to cue. Finally, the biggest hurdle was figuring out how to turn the project from lines of text into an app. We have never worked with developing UI, so this was certainly a big challenge for us

Accomplishments that we're proud of

We are very proud that we have a working demo of our product. We were worried about connecting our code logic to the Spotify API and even further to buttons and text boxes within a UI. We are very excited that our UI is working and did not detract at all from our working base layer logic.

What we learned

We learned a lot about how to use API calls and how to develop a UI using libraries within Python

What's next for HighwayHarmony

We hope to continue to develop our product to make it easier to use, and to allow our app to be run on several devices at once. This way, we will have the app ready for our upcoming road trip!

Built With

Share this project: