BeatSyncSolution: Origin Story
Tags: django, music, aws, kubernetes
Published: 2024-05-17 20:29:26

First post lets gooooo. The ADHD meds got me feeling productive.

## Origin of Title

So I definitely stole this title from one of those AI title generators online, even got an idea for the branding of this from there. It definitely had to happen, I can barely come up with a good username for myself. It's nice though, I like the name and it helps me have more coherent thoughts about the project.

## How I came up with idea for project

I came up with the idea for this project because I have always loved listening to music, primarily electronic music, and downloading it to be listened to later. I would spend hours individually ripping them from whatever streaming service, or buying it from Bandcamp if I had the money, and organizing them into meticulous playlists based off of their genre. It became more of a thing when I was in college hanging out with friends and I was the only one confident enough in their library to play it for them.

I loved doing all this, but it was tedious and takes so damn long. This especially became an issue recently, when I really decided to start taking DJ-ing seriously. I needed to suddenly have access to my entire library, and that was going to be difficult considering I had multiple different streaming services and they all had lots of different rules. Additionally, that was thousands of songs I had to download, dozens of playlists, it was a lot of work. I wrote a python script to help me out with the whole process, but it just made me realize how much I needed this software in particular.

Wouldn't it be so much easier if I could just click a couple buttons and it would just sync all the new songs I added to my playlists form all platforms? Or maybe if I had something that could let me know "Hey, this song you want downloaded from SoundCloud? You can get it higher quality here with proper tagging on Spotify." Or, and this was a dream within a dream, it could also manipulate the DJ library I was working with and automatically organizing it for me.

And then, I got a call from my contracting company I was working for that there might be budget cuts, so we gotta start interviewing again. Once I got over the depressive episode of that (lol), I realized that there's going to be a lot of things I have to do to put myself on the map there as a Mid-level DevOps Engineer, one of those things being having good personal projects. So I figured, why not have my personal project be something I actually wanted for myself and that's when I came up with this.

I did some research into the SDLC, wrote out my own personal Product Requirements Document, and set up a GitHub repo for it. And now, we'll be gradually adding more and more to this until I feel it's good enough for me personally.

## TechStack I will be using

Since I wanted this to be something that not only enhanced my ability to do full on development but also my DevOps skills, I decided this software would be a web app. I was planning on using the web framework I knew the least about with the language I was still learning, **Django**. I'm still pretty new to **Python** so I figured it would be a big challenge, but doing this would close the gaps and get me to have a really good idea of how to properly implement new features into things.

And since it would be a web-app, of course it would need to be actually hosted somewhere. That's where my DevOps practice would come in. I only have experience with **AWS**, so that's where I decided the software would eventually live. I'm also working on getting some certifications with **AWS**, so I think the knowledge I gain from that will be helpful in figuring out what services would be best for this. Going along with that idea, I would have to define how all of this is set up through things like **Terraform**, another one I wanted to learn more, and the actual application itself being contained using **Kubernetes**.

As for the actual functionality of the thing, like how I'll be organizing and downloading from all these streaming services, I will obviously be using all of their respective APIs, which should be fun (sarcasm). But directly downloading will be done using a couple different projects I've found on GitHub that I cannot recommend more:
* If you want to download music well in SoundCloud, this [SCDL](https://github.com/flyingrub/scdl) project is amazing and flyingrub for sure did his thing.
* Spotify has always been a pain to try and download from until I found [Zotify](https://github.com/zotify-dev/zotify) here, Zotifydev is a lifesaver
* The classic [yt-dlp](https://github.com/yt-dlp/yt-dlp) was how this all began, to be honest this one still confuses me but well figure that out in development
* Bandcamps fine too, I guess

## Final

There will likely be other things that I need as I move more forward into development, but this is exactly how I learn. I'm not excited to have to do the job search again, but I am excited to start a project on my own specifically for me in such a regimented style. I'm sure it'll be really fulfilling and help me out a LOT.

I'm not really expecting anyone to keep up with this, it's kind of more to keep me sane as I work on it and document my thoughts. But either way, I'm liiiit.