I relied upon ChatGPT to build this as my development experience is pretty light. What I found was it's not perfect, but because I know enough Python to troubleshoot, I was able to either fix issues myself or understand the right way to frame the next prompt to improve or resolve any problems I ran into.

I started a new chat and explained that we would be working together to build a web app that would take a user's input and use the chatGPT API generate a unique music playlist, taking into account every mood, activity, emotion, attitude, era, and artist that the user mentioned. The results would be displayed in a table with the album thumbnail, artist and song information, and an audio preview. The user should also be able to open the full playlist in Spotify.

It recommended we create a Flask app in Python and immediately generated some code and instructions. It took a bit of finessing to get the right libraries installed and setup the environment variables correctly, but I had something working within about an hour. It was ugly, it was slow, but it was functional.

After several queries, it's recommendations no longer seemed to be talking about the same code we'd written. It would reference functions that didn't exist or weren't named the same. For awhile, I could reset it by simply saying, "Here is the current version of the code" and paste the source in, but eventually, it got too large. I refactored both the python file and the html templates so that they were more manageable sizes, and that helped. I found I could also simply paste a function or section of code I was having trouble with and usually get usable feedback.

I had avoided using frameworks like Bootstrap before because there seemed to be a learning curve that I just didn't have time or need to dive into. However, because it designed the app around those frameworks, I had the luxury of just seeing the results and how they were achieved. I won't pretend I'm an expert, but I do feel far more confident if I needed to start from scratch.

By the evening, around 6 hours after I'd started, I had an incredibly usable web app. It was clear enough that I could continue to iterate on my own, occasionally asking chatGPT for assistance when I wanted to make a larger change. Over the next few days, I worked with some partners to fix up the design and hosted it on a server that wasn't my dev computer.

About a week before we launched, I ran into a bug. Two queries ran very close together and the first user got the second users results. Oh no! I realized I'd need some sort of user session management on the server, but didn't really know where to begin. I pasted some of the API functions to chatGPT and explained what happened and what I thought needed to be done. Within 15 minutes, I now had server-side session management. But now I was running into openAI rate limits! It took a little longer to get that all working, but within an hour or two, I now had a working queueing system.

I was then able to very quickly add little bits and pieces: a button to use speech recognition to submit your request instead of typing, the ability to share your playlist via SMS or notes, and an option to extend your playlist if you wanted more songs.

I feel like I've learned more in the past 3 weeks than I have over most of my technical career - I was certainly able to achieve success much more quickly which kept me motivated through the more difficult or confusing periods. The response today has been fantastic, and I'm really proud of what I created.