My Journey of Developing a Music Recommendation App: Version 2.0

Tanner
3 min readFeb 1, 2024

--

Introduction

Hello everyone and welcome! In my previous article, I introduced the first version of a music recommendation app that I created. If you haven’t watched that video yet, you can find the link in the description below. In this article, I’ll be sharing the progress that I’ve made on the app and how I addressed the issues that I encountered in the first version.

Addressing The Lessons Learned

There were 3 major changes that I wanted this iteration of the app to address. The first issue in the original app was that I did not use any pattern in the front-end code. This made it difficult to follow and change pieces of functionality or add a new feature to an existing one. The solution that I implemented this time was the BLoC Pattern. The BLoC Pattern separates the view from the business logic, making it easier to manage and update.

The second change was using Firebase instead of AWS. In the original app, everything was stored in dynamo tables, and the only way to interact with those tables was through an API gateway via lambda functions. Firebase offers a much simpler way to set up a backend with a cloud Firestore, resulting in a significantly smoother experience for the user.

The final adjustment was giving the backend more responsibility for the app. In the first version, the flutter and dart code were responsible for most of the work, with the lambda functions doing a small amount of work with the database. Firebase has many different tools that can be used for backend services, and one tool I am using is Cloud Functions. These are the Firebase equivalent of lambdas and can be configured to run anytime something changes in the Firestore database.

Photo by engin akyurt on Unsplash

Other Improvements

There was one other change that I had learned I wanted to make, which was setting up a proper local development environment. In each of the backend repos, I have a wrapper script for docker-compose to get the containers up and running in docker. The cloud functions repo also gets a local instance of Cloud Firestore running so that I don’t interact with the production store anytime I am developing.

Photo by Karl Solano on Unsplash

Current App Status

Now that I’ve gone over all the updates and how the local environment is set up, let’s take a look at the app. The first screen the user will see after they are authenticated is the swipe screen. This is where they’ll see all the songs they’re going to be deciding on. If they like the song, they will swipe right, or if they don’t like it, they will swipe left. In future dev logs, there will be the ability to play and pause songs.

Conclusion

In this article, I shared the progress that I’ve made on the second version of the music recommendation app and how I addressed the issues that I encountered in the first version. By implementing the BLoC Pattern, using Firebase instead of AWS, and giving the backend more responsibility for the app, I was able to create a smoother and more efficient app for the user. I hope this article was helpful and informative for anyone interested in developing a music recommendation app. Stay tuned for more updates in future dev logs.

--

--

Tanner
0 Followers

Software Engineer & Machine Learning Enthusiast