Skip to content

Radexito/DjManager

Repository files navigation

DJ Manager

Your music library, built for DJs. Import tracks, analyse BPM and key automatically, build playlists, download from anywhere, and prepare sets — all stored locally on your machine.

CI Release code style: prettier ESLint Tested with Vitest E2E with Playwright

DJ Manager screenshot


Download

Grab the latest build for your platform from Releases.

FFmpeg and the audio analyser download automatically on first launch — no manual setup required.

Platform File
Linux DJ.Manager-x.x.x-Linux (AppImage — just run it)
Windows DJ.Manager-x.x.x-Setup.exe
macOS DJ.Manager-x.x.x.dmg

Windows — Chocolatey

If you use Chocolatey, you can install and keep DJ Manager up to date with a single command:

choco install djmanager

Package page: community.chocolatey.org/packages/djmanager


What it does

Library — Import audio files once; DJ Manager copies them into managed storage and deduplicates by content hash. Sort and filter by any column. Select multiple tracks with click, Shift+click, Ctrl+click, or Ctrl+A.

Advanced search — Type a query into the search bar to filter your library with precision. Filters can be stacked with AND:

GENRE is Psytrance AND BPM IN RANGE 140-145
KEY matches 8A AND BPM > 130
ARTIST contains Burial AND YEAR > 2010
TITLE contains intro AND LOUDNESS > -10

Supported fields: TITLE, ARTIST, ALBUM, GENRE, BPM, KEY, YEAR, LOUDNESS. Supported operators vary by field — is, is not, contains, in range, >, < for numbers; is, matches, adjacent, mode switch for keys (Camelot notation: 8A, 8B, etc.). The search bar shows field and operator suggestions as you type, and completed filters appear as removable chips above the track list.

Analysis — Every track is analysed automatically on import for BPM, musical key (Camelot notation), loudness (LUFS), replay gain, and intro/outro markers. Right-click any track to re-analyse, or halve/double the detected BPM if the analyzer picked the wrong grid.

Find Similar — Right-click a track to find others with a matching or adjacent Camelot key, or within a close BPM range. Results are applied as a live search filter.

Auto-tag — Right-click any track and choose Auto-tag to look up metadata from MusicBrainz and Discogs simultaneously. A side-by-side diff shows the current value next to every candidate found; pick the value you want per field (Title, Artist, Album, Label, Year, Genres) from a dropdown and apply in one click.

URL Import — Paste a URL from YouTube, SoundCloud, Bandcamp, Spotify, or 1000+ other sources into the Download tab. DJ Manager fetches the track list first so you can review and deselect anything before downloading. Tracks are imported into the library one by one as they finish — no waiting for the full playlist. A dual progress bar tracks both the current download and overall playlist progress, and a status table shows each track's state (pending → downloading → importing → done / failed).

Playlists — Create colour-coded playlists in the sidebar, drag tracks in from the library, reorder by drag-and-drop, and sort by any column. Track count and total duration are shown at all times. Exporting a playlist to M3U is one click. Playlists imported via URL remember their source link.

Player — Full playback with seekbar, shuffle, repeat, previous/next, and hardware media key support. Intro and outro zones are shown visually on the seekbar so you know exactly when to mix. Double-click any track to play.

Settings — Move your library to any location, including an external drive. Update FFmpeg and the audio analyser in-app without reinstalling. Clear the track library, all playlists, or all user data from the Advanced tab.


Running from source

git clone https://github.com/Radexito/DjManager.git
cd DjManager
npm install
cd renderer && npm install && cd ..
npm run dev

FFmpeg and mixxx-analyzer are downloaded automatically to ~/.config/dj_manager/bin/ on first run.

Other useful commands

Command What it does
npm run dev Start Electron + Vite dev server together (default for development)
npm run react Start the Vite renderer only (UI dev without Electron)
npm run build Build the renderer for production
npm run electron-prod Run Electron against the production build
npm run dist Build + package for the current platform
npm run dist:linux Build + package for Linux (AppImage)
npm run dist:win Build + package for Windows (NSIS installer)
npm run dist:mac Build + package for macOS (DMG)
npm run lint:all Lint main process + renderer
npm test Run unit tests (Vitest)
npm run test:e2e Run E2E tests (Playwright)

Upcoming work is tracked on the Issues page.


Rekordbox USB export

Right-click any playlist in the sidebar and choose Export Rekordbox USB to write a Pioneer CDJ-compatible USB drive — no Rekordbox software required. DJ Manager writes the binary formats CDJs read directly: export.pdb (track database), ANLZ0000.DAT/.EXT/.2EX (waveforms and beat grids), and PIONEER/MYSETTING.DAT (player settings).

Re-exporting and incremental behaviour

Each export to the same USB folder merges with whatever was previously exported there. A manifest (PIONEER/rekordbox/export-manifest.json) records all tracks and playlists on the USB; subsequent exports read it and inject new content into the existing database without removing anything.

What gets written Behaviour
Audio files (/music/) Skipped if already present — existing files are never overwritten
ANLZ files (waveform / beatgrid) Regenerated for new tracks only — existing ANLZ files are left untouched
export.pdb (track database) Rebuilt from all tracks — current export merged with previous exports
PIONEER/MYSETTING.DAT etc. Always regenerated
export-manifest.json Always updated — records the full set of tracks and playlists on the USB

You can export playlists to the same USB one at a time — each export adds its tracks and playlists to the CDJ database without touching the ones already there.


How files are stored

Audio is stored at ~/.config/dj_manager/audio/<xx>/<hash>.<ext> (configurable via Settings → Library). The two-character hash prefix keeps directory sizes manageable. Playlists reference tracks by ID — no duplicates, no copies.

Logs are written daily to ~/.config/dj_manager/logs/app-YYYY-MM-DD.log.

About

Your music library, built for DJs. Import tracks, analyse BPM and key automatically, build playlists, and prepare sets — all offline, all on your machine.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Contributors

Languages