One Year of Raveberry

April 17, 2021 - Reading time: 7 minutes

It's been a little over a year since Raveberry was released to the public with this post. For those that don't know, Raveberry is a music server that uses people's votes to determine the order in which songs are played (like a social jukebox).

While the last year has been challenging in a lot of ways, it also resulted in more time at home for many of us. For me this lead to more time being spent on this side project. Many parts were added or improved and today I want to present the highlights.

A lot of these changes were proposed by other people, which I tried to indicate where I could. I want to use this occasion to express my thanks for your valuable input. Without you, this project would not have evolved nearly as much as it has. Thank you so much for your contributions.

Features

Here are some of the new features that were added to Raveberry over the course of the last year:

  • Local Files: Shortly after the announcement, Raveberry gained the ability to play songs from the local file system. (u/mxpower on r/programming)
  • Streaming: Since meeting up in person is currently complicated, remote streaming was implemented. Now, you can cast your music directly into everyone's home.
  • Discord: The Raveberry bot for Discord was created to allow a shared music experience in Discord.
  • Backup Stream: To prevent unwanted silence after the queue runs out, a backup internet stream can be provided that is played in this case. (Crushedice on GitHub)
  • New Music Only Mode: Since the suggestions were taken from previously played songs, people oftentimes enqueued the same songs over and over. To prevent this, a new mode was introduced that shows no suggestions and refuses to play anything but new music. (L. in real life)
  • WLED Support: Upon request, Raveberry was extended to interface with WLED. (qu4nt4r on GitHub)

Quality of Life Improvements

Besides these easily noticeable features, a lot of small changes were made that improve the usability of Raveberry in more subtle ways:

  • Online suggestions make searching for music more comfortable. (u/TheStabu on r/raveberry)
  • Configure the number of suggestions to set your own focus. (MatthewAscough on GitHub)
  • Automatically modify search queries to filter undesired music or always add a specific keyword. (skoef on GitHub)
  • The Docker image makes installation a lot simpler. (nickatnight on GitHub)
  • Graying out unavailable settings increases clarity over which options are available. (stappjno on GitHub)
  • Voting for logged in users allows them to participate without opening a private window. (F. in real life)
  • Auto upvoting, because that's how it should be. Also puts manually requested songs over those from autoplay or playlists. (S. in real life)
  • Webinterface upgrades greatly simplify moving to the next version, removing the need for sshing into the machine each time.
  • /network_info shows the IP address and a QR code for ease of access. (copykatze on GitHub)

Code quality

Last but not least, the quality of Raveberry's codebase improved as well:

  • Formatting and Linting ensures a consistent code style, prevents errors and allows to focus on the important things.
  • Testing in both front- and backend make pushing changes a lot less stressful.
  • Modularization reduces the number of dependencies and makes responsibilities more clear.
  • Reducing the package size makes Raveberry install and load faster (for more detail, see this post).

I'm so happy to see how this project grew and how many people seem to like it. I'm curious to see how the next year will go (hopefully with more hanging out together…). If you have any suggestions or feedback, let me know!

Thank you a lot, stay healthy and have a great day.

About

Raveberry is a multi user music server that allows democratic selection of songs.