Building a Playlist Manager with Vanilla JavaScript & Tailwind CSS

This past weekend, I took on the challenge of building a Playlist Manager application that integrates with Spotify, armed with nothing but vanilla JavaScript, HTML, CSS, and a touch of Tailwind CSS. Juggling university classes and work, I embarked on this coding adventure, part of my Full Stack Web Development course at Uplift Code Camp.

Unfortunately, Spotify does not allow quota extension requests for school/hobby projects. This means, the app can only be used for accounts that are registered in the Spotify Developer platform. If you wish to test the application, please email me your spotify account at alongside with the purpose of such request.

The Challenge

  • Build a fully functional web app for managing Spotify playlists.
  • Use only vanilla JavaScript, HTML, and CSS.
  • Incorporate Tailwind CSS for styling.

The Pre-Design Dilemma

Before diving into the code, I hit a crossroad: should I spend precious time designing the app in Figma, or jump straight into development? With just one weekend to bring this project to life, amidst a busy schedule filled with university and work commitments, I was hesitant. But, deciding to lay a solid foundation, I took to Figma, sketching out my vision for the app.

This decision turned out to be a game-changer. Designing first helped crystallize my ideas, allowing me to visualize the end product. It streamlined the development process, as I had a clear blueprint to follow. With the design in place, exporting assets in the correct sizes and making design decisions became a breeze, eliminating guesswork and speeding up development.

The Adventure Begins

The development kicked off with constructing the `SpotifyAPI` class, my bridge to Spotify. Then, the `PlaylistManager` class, dealing with recommendations, playlist staging, and integration with Spotify. For the UI, I combined HTML and Tailwind CSS for a clean, efficient design process.

Overcoming Challenges

  • State Management and UI Updates required a deeper understanding of vanilla JavaScript.
  • API Rate Limits and Error Handling needed careful strategy to keep the user experience smooth.
  • Tailwind CSS was a breeze for applying styles, proving its worth in streamlining the design process.

Confronting OAuth

The integration of Spotify into my project necessitated navigating the OAuth authentication process, a critical step for accessing Spotify's API securely. Without prior classroom discussion on OAuth, I relied entirely on my diligence in reading and deciphering Spotify's extensive documentation.

Implementing OAuth was like solving a puzzle with pieces from different boxes. I had to understand the authentication flow thoroughly—from obtaining tokens and refreshing them to securing user sessions—each step meticulously followed to ensure a secure and functional application.

Future Beats: Enhancements Ahead

  • Code Refactoring for better readability and maintenance.
  • Smarter State Management for smoother UI interactions.
  • User Experience improvements using Tailwind for interactive elements.
  • Performance Optimizations for a smoother experience across devices.

The Tailwind Touch

Tailwind CSS was a revelation, allowing for quick, in-the-moment styling that kept the pace of development up and made responsive design effortless.

Final Thoughts

Reflecting on this whirlwind weekend, diving into the project with a solid design plan in hand was immensely rewarding. The blend of vanilla technologies and Tailwind CSS, paired with a well-thought-out design from Figma, made building the Playlist Manager not just feasible, but enjoyable. It reinforced the power of preparation and the impact of visual planning on coding efficiency. Check out the app here: Aurora Beats.

Here’s to more adventures in coding and design, proving that with a clear vision and the right tools, anything is possible, even on the tightest of schedules. Cheers to the future of building more with less! 🎉🎵