avatarNoah Schumacher

Summarize

Building A Live Music Streaming Platform — Intro

As I end the process of taking down our Kubernetes clusters, databases, and other infrastructure, I realize how much has changed for me in the past three years. I recently started an amazing new role as a Senior Backend Engineer; a role I would not have been able to get just a year prior. So what changed this last year? Well, I dove headfirst into building my own live music streaming company, Muuse. As I settle into this new role, I’ve had more time to think about the experience of building a fully functioning and scalable live-streaming company from scratch. I realized that, if only for myself, it would be nice to write a series detailing my journey as a technical founder and potentially informative for others. So I have decided to write a short series covering the technology stack that powered Muuse, the software decisions we made along the way, and how those decisions panned out. At the time of writing this introduction, I have outlined the following articles for the series:

  • Introduction (this article)
  • Building a Python API — Flask, SQLAlchemy, and GraphQL (graphene)
  • Productionizing a Flask App — Gunicorn, Alembic, Docker, and Testing
  • Cloud Providers & Why We Choose Digital Ocean
  • Kubernetes — A gentle introduction
  • Enabling High Fidelity, Low Latency Live Streaming with NGINX
  • CI/CD Introduction — CircleCI
  • Summary — Closing thoughts on a “failed” startup

At the time of writing this article, I have not written all the subsequent articles. As I do, I will update the above with links and changes as they come.

To introduce myself, my name is Noah Schumacher and I am a Senior Backend Engineer at a promising tech company in NYC. I don’t come from the most traditional CS background and discovering a passion for software has been a long journey. I graduated from UC Santa Barbara with a B.S. in physics but realized late sophomore year physics was not what I wanted to devote my life to. I started taking CS courses Junior year and found an interest in machine learning. After graduating I spent a few months trying to figure out what I wanted to pursue and ended up doing a Data Science Bootcamp at Galvanize. From there I started my first career role as a Data Scientist at a Data Ad-Tech company in Los Angeles. After about a year and a half and with the influence of the pandemic, I came up with the idea for Muuse.

Muuse was conceived as a live music streaming platform designed to foster community and enable social connection through live music. An easy comparison is Twitch but designed specifically for music and enhanced social interaction. Unfortunately, after a fairly successful launch and initial few months, we were unable to keep upward momentum in growth and now, at the time of writing this, my co-founder and I have taken our servers down and put Muuse on pause. However, to understand the implications of the software decisions made, I think it may be helpful to have a high-level understanding of what we set out to build.

Muuse was a free platform where anyone could make an account and stream high-quality audio and video content to whoever wanted to view it. Profiles were customizable with photos, music genres, and connections to other social and music platforms. Users could chat with one another and the streamer in real-time via the Global Chat linked to each stream or Stage. They also were able to form Group Chats with friends or larger music communities that would persist messages and span across Stages. Muuse is best broken down into three main components. The first of which is the Feed.

The Feed is the landing page of Muuse and provided a vertical scroll of live streamers (middle content). There are three breakouts

  • For You — A curated list of streamers based on a user’s musical preferences and connections with other users.
  • Following — A filtered list of streamers of just the users you follow.
  • Explore — Enabled extra filtering criteria for streams.
Main Feed

The next component is the Stage. Here you were able to see users’ live streams and participate in their global chat. As a viewer, you were also able to see other recommended live streams. If you were viewing your own Stage, you were able to see more viewership stats, such as total follows during the stream, total donations, aggregated lifetime stats, etc.

The Stage. Where users can view live music streams.

The last main component is the Profile. Here you were able to follow users, see their following and followers, as well an activity feed giving some information as to what streams they have been viewing and who they have been interacting with. If you were viewing your own profile you could adjust your settings and information on this page as well as monitor your Group Chats.

User Profile

A few other noteworthy features were:

  • Donations and tips towered with Stripe.
  • Notifications (someone follows you, invites you to a group chat, someone you follow starts streaming, etc)
  • A sophisticated authentication flow.
  • Chat Group management (group photo, name, access, muting, etc)

The images should give much more information than my short descriptions but hopefully, this is a great starting point for understanding Muuse and the technological complexities we had to solve to enable it.

I am excited to begin this series and will do my best to make each article enjoyable and informative. With that feel free to reach out with any questions, comments, or suggestions.

Startup
Live Streaming
Python
Nginx
Kubernetes
Recommended from ReadMedium