This project was initiated several years ago with the primary goal of enhancing coding skills and mastering Object-Oriented Programming (OOP). Over time, it evolved into a dynamic platform for implementing various technologies and concepts. Here's the journey:
-
Data Fetching and Clustering: The project began with the development of a simple application that interfaced with Spotify's API to fetch data and applied K-means clustering to organize the information effectively.
-
Web Application Integration: The project expanded to include a web application using Flask, complemented by a clean and user-friendly front-end created with JavaScript, providing a seamless user experience.
-
Containerization with Docker: The introduction of Docker played a pivotal role in the project's architecture. It enabled the creation of a Docker Image and a Docker Compose setup, making the project more portable and easier to manage.
-
Workflow Parallelization with Celery: Recognizing the need for optimization, the project leveraged Celery to parallelize the entire workflow. This enhancement significantly improved the project's efficiency and responsiveness.
-
Enhanced Front-End Aesthetics with Tailwind CSS: To provide an appealing and modern user interface, the project embraced Tailwind CSS, giving the web app a polished and visually appealing design.
-
Interactive Data Visualization with Chart.js: While working on data visualization, the project transitioned from Plotly to Chart.js. This transition enabled the creation of more interactive and engaging visualizations to better convey insights from the data.
-
Code Refactoring with Pydantic Models: In a recent makeover, I refactored the code using Pydantic models to make it more readable and scalable. This change not only improved code clarity but also set the stage for future expansion and enhancements.
This project has been a wild ride of learning, trial, and error. It's proof that you can turn a small coding endeavor into a playground for all kinds of cool implementations
The app extracts your spotify data with their public API, and then apply the famous clustering method K-means and plot some insights with ChartJS.
- PEP8 Refactor (Currently Working on)
- Implement Pydantic (Currently Working on)
- Store data in Amazon S3 bucket.
Simplest way to run the project is by docker-compose up
For doing this you will need to add your credentials to the config.cfg
file:
- client_id
- client_secret
- redirect_uri
After that you are free to go.