DJ AI banner

DJ AI

6 devlogs
43h 26m 51s

This project develops an intelligent DJ tracklist generator that analyzes real DJ sets to learn common transition patterns between tracks. It combines this learned transition data with audio features such as BPM, energy level, danceability, and ke…

This project develops an intelligent DJ tracklist generator that analyzes real DJ sets to learn common transition patterns between tracks. It combines this learned transition data with audio features such as BPM, energy level, danceability, and key to automatically generate coherent, DJ-ready track sequences optimized for smooth mixing and crowd energy flow.

Demo Repository

Loading README...

Ivole32

2026-01-31 [2]

Improvements

  • Added the homepage textbox to the GitHub version as well.
    Previously, it was only available on the demo website.

  • Started working on the footer by adding useful navigation and resource links.

More updates and refinements coming soon.

Attachment
0
Ivole32

2026-01-31 [1]

First of all, I want to say thank you for the huge payout for the Ship — it is highly appreciated and very motivating!

Changes & Improvements

🐳 Docker Fixes

  • Fixed several Docker-related bugs that caused minor deployment inconsistencies.
  • Improved container stability and startup reliability.
  • Cleaned up some internal configuration issues.

🤖 DJ AI Internal Improvements

  • Updated various internal components.
  • Fixed small logic and performance issues.
  • Improved overall system stability and maintainability.

Final Notes

This update mainly focuses on stability, reliability, and internal improvements rather than visible new features. More updates are coming soon!

Thanks again for the support 🚀

Attachment
0
Ivole32

Shipped this project!

Hours: 41.09
Cookies: 🍪 1031
Multiplier: 25.1 cookies/hr

Inspiration

DJ AI draws from my own journey as an aspiring DJ. While I was learning the ropes, I quickly discovered that crafting smooth and musically coherent transitions between tracks is one of the trickiest aspects of DJing. Picking the right next track, aligning BPM and harmonic keys, and keeping the energy flowing just right takes experience that many beginners don’t have yet.

I often ended up with great playlists but found it tough to connect the tracks in a way that felt seamless and professional. This frustration pushed me to look into how technology and data-driven insights could assist DJs in their learning journey without stifling their creativity.


What it does

DJ AI analyzes tracks to help DJs discover better transitions. It assesses musical and technical elements like BPM, key, energy, and compatibility to recommend which tracks blend well together in a playlist or DJ set.

The system is designed with real DJ workflows in mind, focusing on playlist arrangement, energy flow, and transition logic. DJ AI serves as a helpful guide, enabling DJs to grasp why certain transitions work and aiding them in making smarter choices while planning their sets.


How I built it

I developed DJ AI using Python and FastAPI for the backend, with PostgreSQL as the main database to manage users, playlists, tracks, and ordering logic. I also utilized Redis for caching and boosting performance, especially for fuzzy searches and repeated calculations.

Before the system can use track analysis data, it goes through processing and normalization. The frontend interface allows users to manage playlists and engage with the recommendations, which made me really think about API design and user experience.


Challenges I faced

One of the toughest hurdles was designing the database. Creating a model for playlists that included ordered tracks, user ownership, public visibility, and performance considerations in PostgreSQL led to multiple redesigns. Figuring out how to insert tracks between existing ones without messing up the order or performance was especially tricky.

Another significant challenge was getting the analyzed track data ready and structured. The data came from various sources and was often inconsistent or incomplete. To make this data useful for recommendations, I had to go through a lot of validation, normalization, and iterations.


Accomplishments that I’m proud of

I’m really proud of developing a system that mirrors how DJs think about music selection and transitions. DJ AI goes beyond just giving simple recommendations; it takes into account flow, structure, and usability.

I also take pride in the technical backbone of the project, particularly the PostgreSQL schema, transaction handling, and caching strategies. Even with all the complexity, the system stays clean, extensible, and performs well.


What I learned

Working with DJ AI has really deepened my understanding of PostgreSQL. I’ve delved into schema design, indexing, transactions, and performance optimization. Plus, I’ve picked up some valuable insights into frontend development and how the choices made on the backend can significantly impact the user experience.

This project has highlighted just how crucial data quality is for machine learning and recommendation systems. Without clean, well-structured data, even the most sophisticated algorithms fall flat.

Above all, I’ve learned to tackle complex problems step by step and to embrace the idea that good software is a product of continuous iteration and redesign.


What’s next for DJ AI:

The next phase for DJ AI involves a deeper integration into the everyday workflows of DJs. I’m excited to explore how we can connect with DJ software like Rekordbox, Serato, or Traktor, enabling DJs to access recommendations right within their current setups.

Looking ahead, we’re also planning to enhance our analysis of energy flow, improve transition modeling, and create more interactive visualizations. Ultimately, DJ AI aims to be a reliable partner for DJs, helping them to improve their skills, plan better sets, and focus more on their creativity rather than getting bogged down by technical challenges.

Ivole32

2026-01-11 [1]

🧠 DJ AI – Devlog: Profiles, Playlists & Core Features

In this phase, DJ AI evolved from a data-driven prototype to an app with real user features. The focus was on building core functionality for meaningful user interaction.

👤 User Profiles

A major addition was the implementation of user profiles.
Each user now has an associated profile that includes:

  • A profile picture (either a default avatar or a custom uploaded image)
  • A short bio
  • Profile-related configuration data

This required solid database design and secure file uploads. I also added logic to reset profile pictures to a default avatar.

🎵 Playlists

Playlists form the backbone of DJ AI and received significant attention during this phase.

Users can now:

  • Create and delete playlists
  • Set playlists to public or private
  • Add tracks to playlists in a specific order
  • Insert tracks between existing tracks while preserving order

Designing this system meant thinking about PostgreSQL tables, ordering, and edge cases like authorization and missing resources.

🔍 Track Handling & Logic

Playlist logic meant handling real data issues. Track data had to be filtered, validated, and structured so only valid, analyzed tracks were used.

⚠️ Challenges

  • Efficient database schema for ordered playlists
  • Edge cases in authorization and data consistency
  • Preparing analyzed track data for reliable use

🎓 What I Learned

  • Working more deeply with PostgreSQL
  • Structuring backend code for scalability
  • How backend logic and frontend needs influence each other
  • Turning analysis results into usable features
Attachment
Attachment
Attachment
Attachment
Attachment
0
Ivole32

2026-01-07 [1]

🚀 Machine Learning Model

In the past days, I started implementing a real machine learning model for track prediction and building a solid base of training data. The model is now functional and designed to serve as a reliable foundation for future improvements and experiments.

I created a fully working submodule dedicated to the machine learning model, making it possible to set up, train, and use the model independently.

🎧 Track Analyzer

Alongside the ML model, I implemented a separate analyzer module that processes YouTube tracks provided by
mir-aidj/djmix-dataset
.

The analyzer automatically downloads the tracks from YouTube and extracts the required data for further processing.

All processed data is now stored separately in /dataset, which greatly improves project structure and maintainability.

🧹 Code Quality & Documentation

A significant amount of time was spent on documenting the code, improving readability, and cleaning up internal structures. This was an important step to ensure long-term maintainability and stability.

🖥️ Frontend & Backend Status

Work on the frontend and backend has already been ongoing for quite some time. However, these components have not been released yet, as the codebase is currently undocumented and unstable. They will be published once the overall structure is more mature and reliable.

Changes: https://github.com/ivole32/dj-ai/compare/527b8b8...8326065
Picture 1: Frontend preview // Not attached for some reason. Look here
Picture 2: Model prediction
Picture 3: Model treaning

Attachment
Attachment
1

Comments

SeradedStripes
SeradedStripes 2 months ago

This looks fire!

Ivole32

2026-01-02 [2]

Over the past hours, I’ve been focusing heavily on the backend of the project and laying down a solid foundation.

🔍 Track Search

I implemented a track search system that allows tracks to be found reliably. During development, I paid close attention to clean code, clear structure, and proper separation of concerns to keep the system maintainable and extensible.

🔮 Track Prediction

In addition to search, I built an initial track prediction system that analyzes existing track sequences and predicts which tracks are likely to be played next. This currently works on a heuristic/statistical basis and serves as a foundation for more advanced models in the future.

🧠 Backend Architecture

A lot of effort went into keeping the backend organized and well-structured:

  • Clear module separation

  • Reusable services and utilities

  • Proper validation and error handling

  • Performance considerations (e.g. Redis)

🚧 Next Steps

The next planned steps are:

  • Building the frontend

  • Implementing proper prediction models (ML-based)

  • Connecting predictions and search results to the UI

Overall, the focus so far has been on correctness, maintainability, and creating a strong backend foundation to build upon.

GitHub Commit: https://github.com/Ivole32/DJ-AI/commit/527b8b85e64ff31a002adb5c9aef65db57c247f2

Attachment
0
Ivole32

2026-01-02 [1]

I spent the first 1–2 hours mainly searching for a solid dataset to build this project on. After trying several options, I found the djmix-dataset (https://github.com/mir-aidj/djmix-dataset
), which turned out to be a very strong foundation.

Since the documentation was quite limited, I had to explore the data structure myself to understand how everything is stored. During this process, I discovered that the track IDs are actually YouTube video IDs, which is a big advantage because it allows me to extract additional features like BPM, tempo, and other audio characteristics in the future.

Next, I will focus on building a simple and efficient Python-based backend API that supports track search and recommendations. I’m planning to use FastAPI together with Pydantic, and either integrate an existing search library or implement a lightweight custom solution.

GitHub Commit: https://github.com/Ivole32/DJ-AI/commit/82c00830b5fdac62a24acf8df4891f26f1cb1f39

Attachment
0