Mainstream music listeners have a lot of options when it comes to choosing services which will play the music they like. Some of the most popular music streaming services, like Spotify, iTunes, Apple Music, YouTube Music, Deezer, all serve a similar purpose when it comes to streaming and listening to music and other content, such as podcasts.
To create an alternative to the top music streaming services, the custom solution we were tasked to build had to contain the existing features, as well as additional ones that would attract new users. A new music streaming platform had to be a cloud service, which we built using the .NET framework, and hosted on AWS (Amazon Web Services).
If someone – either as a listener or a musician – has a different taste and does not prefer mainstream genres, or if the above-mentioned platforms do not align with their values and their taste, it is almost impossible to find an appropriate digital music platform, so we were tasked with building a cloud music streaming platform that would be a solution to this.
Our client wanted to create a new platform, a custom solution that would support a different type of content, which can’t be found using the existing music apps and other online outlets. One of the main reasons for this entrepreneurial endeavor was that the general audio content on all of the other music streaming services was not aligned with the values they wanted to represent and share between the members of their community. Along with this, the volume of the content was not enough to be financially significant, which is why none of the mainstream music platforms didn’t show much interest in accommodating their needs.
The custom solution we built needed to realize its potential of transforming the music industry of the client's community and giving the potential listeners better control over the content, while at the same allowing content producers to generate better revenue and creating the best streaming platform for artists.
Additionally, the platform needed to be innovative, up-to-date, and able to compete with top music streaming services like Spotify and iTunes by incorporating the majority of their most sought-after features. It also needed to be connected to a physical "radio-like" device, which would be used for playing the music, but it also needed to be compatible with the mobile app which we designed and implemented.
We have implemented a Single Page Application (SPA) that was able to support both end-users as well as administrators. Administrators are using the system to manage all the available content, while users are setting their preferences and interacting with that same content.
In addition to this, we introduced a feature that randomly selects the content to be played next. This feature makes the whole experience more enjoyable for the user – the system chooses the content for the users, adding an element of surprise and eliminating the need for users to manually search through lists for their next song.
What we also added was the payment processing system, which enables users to access the premium content, and supports complex reimbursement calculations for content creators.
The music platform also uses AWS to store and stream the music, and to manage the underlying infrastructure. AWS provides a scalable and reliable cloud computing platform that can handle large amounts of traffic and data storage, ensuring that the platform can handle an increasing number of users.
Finally, in order to keep track of user behavior, an extensive analytics module was added.
React framework is the de facto standard for building SPAs, so it was our obvious choice – it is fast, reliable, and powerful in manipulating complex user interfaces. As a state management tool, we decided to go with MobX. Our first step was to build core services. Our SPA architecture is based on practices described in the MobX documentation.
Business logic is divided into multiple data and UI stores that are interconnected. UI stores are even more specific. Since their main purpose is to manage the state of each React component, each React component has its UI store that is created on a component mount lifecycle event and injected as a prop value.
Our server is a REST API service built on a .NET Web API framework and composed of two logical modules – core and analytics.
The core is responsible for handling user authentication, content management, and payment processing. Server interacts with our primary data store (PostgreSQL).
One of the main requirements was to keep a record of what is currently playing on each device using the platform. This introduced a challenge related to storing and processing a high volume of data and generating complex reports based on it in a reasonable amount of time. Classic RDMBSes like PostgreSQL, which we had already used, didn't match our needs.
Our first choice was TimescaleDB, as it is based on PostgreSQL and well-suited for storing time-series data. We did reduce storage size, but we didn't benefit much in query speed compared to the standard PostgreSQL database. Under the hood, it is still a PostgreSQL database that relies on its algorithms during query processing.
Fortunately, ClickHouse managed to fulfill all our expectations. Data compression works great, and SQL queries are multiple times faster compared to the standard PostgreSQL or TimescaleDB. There is also an option to connect to external PostgreSQL databases which we found to be very useful.
In the end, the music streaming platform that we developed successfully caters to different communities, as well as “unpopular” needs and music interests of listeners. In addition to this, it is focused on supporting artists and offers a unique selection of content not necessarily found on mainstream music apps. It is designed to be innovative and competitive, standing right next to all the current top streaming services. Overall, the use of the .NET framework and AWS allowed us to build a music streaming platform that is flexible, scalable, and personalized to the preferences and values of specific communities, and provides an enjoyable listening experience to users.
Book a free consultation
Let us know what would you like to do. We will probably have some ideas on how to do it.