DEV Community

Jonathan Graham
Jonathan Graham

Posted on

Musare - Collaborative Music

Musare

An open-source music app where you can listen collaboratively to real-time curated or custom music stations with friends.

Explore for yourself at musare.com

The GitHub Education Pack was very useful for me and other students I collaborated with whilst developing this project. In particular, we utilised the access to free GitHub Pro, and the benefits offered by Mailgun, Travis CI and JetBrains.

The stack:

The project is separated into two different services - the frontend and backend. Socket.io is used as intermediary between the two. We also use Docker for managing the live servers and helping with local development.

Frontend

A vue-loader SPA [Single Page App.], which is served over Nginx.

Technologies used:

  • Vue.js for building the user interface
  • Vuex for handling state with Vue

Backend

A Node.js app that is build with scalability in mind for the future.

Technologies used:

  • Node.js for server-side code
  • MongoDB as a non-relational database
  • Redis for caching (e.g. user sessions)

The codebase:

GitHub logo Musare / MusareNode

A modern, open-source, collaborative music app

MusareNode

Based off of the original Musare, which utilized Meteor.

MusareNode now uses NodeJS, Express, SocketIO and VueJS - among other technologies. We have also implemented the ability to host Musare in Docker Containers.

The master branch is available at musare.com You can also find the staging branch at musare.dev

Contact

Get in touch with us via email at core@musare.com or join our Discord Guild.

You can also find us on Facebook and Twitter.

Our Stack

  • NodeJS
  • MongoDB
  • Redis
  • Nginx (not required)
  • VueJS

Frontend

The frontend is a vue-cli generated, vue-loader single page app, that's served over Nginx or Express. The Nginx server not only serves the frontend, but can also serve as a load balancer for requests going to the backend.

Backend

The backend is a scalable NodeJS / Redis / MongoDB app. Each backend server handles a group of SocketIO connections. User sessions are…

Additional thoughts:

Musare is still in development with many more features planned, some of the in-progress work can be found on the experimental branch.

If you would like to contribute or try out Musare, please check out the links above! We have quite detailed guides in setting up a local instance on GitHub, and, if you need any help, we would love for you to get in touch (contact details available on the readme).

Musare was a team-effort, but was developed mainly by myself and Kristian Vos. The full team (past and present) can be found on the website.

It is also worth noting the idea for this project was originally developed in Meteor by some of the team, mainly Akira Laine and Kristian Vos.

Top comments (0)