I’ve started a new project two days ago, the idea for which has been in my head for quite a while, and I’ve even managed to implement a proof of concept in Golang.
The basic idea is that two people log in on a website via Spotify, the app fetches their music libraries from the Spotify API and computes the intersection of their music libraries, so they can have a playlist they can both listen to together.
The name Project 42 is a codename, “42” in this case means “four two”, because the app helps make playlists for two people.
I thought to myself that it might be a good idea to blog the progress, so that I can keep track of what I learn and reference it later.
Tech stack
Originally I wrote the proof of concept in Golang, mainly because I was fascinated by that language at the time. Now, I wish to learn Ruby on Rails, so naturally I chose that as the basis for the project.
I knew I needed to be able to run jobs in background (to fetch large music
libraries) and have a way to report the progress to the user. Golang has
wonderful features for that - goroutines
and channels, and the
gorilla/websocket
library solves the
progress-reporting problem.
So I began looking for Rails-based alternatives, and turns out Rails has all I need built in:
Active Job is a framework provided by Rails for declaring and running background jobs in queues.
Active Cable is Rails’s solution for websocket communication, it is built into Rails since the 5th version and also provides a client-side library.
The last missing part was a library for the Spotify API, but a quick Google search led me to RSpotify which contains everything I need, including an OmniAuth provider.
I really hope I can finish this project this time. I’ll try to come up with some deadlines to make sure I stay focused and I’ll try to post a progress update whenever I reach a deadline. Well, that’s it for today.