A music library management and DJ tooling platform — part of the samuelmarks.com tool suite. Designed to keep your collection organised, analysed, and in sync across every device you own, without touching your existing workflow.
A professional DJ or serious collector typically has music spread across a primary machine, a NAS, one or more USB drives for gigs, and possibly a second location. Keeping all of these in sync is manual, error-prone, and time-consuming.
Tracks go missing after a sync. BPM analysis differs between tools. Cue points disappear when you move a file. There is no single view of what you own, where it lives, or what has been analysed.
offtherecord maintains a central manifest of your entire collection — where every file is, what has been analysed, and what needs syncing — and acts as a quiet background service that keeps everything consistent without breaking your existing setup.
Never modifies your files without permission. Works alongside Traktor, Rekordbox, and Serato — does not replace them.
All data stays on your own infrastructure. No cloud dependency, no subscription, no third party with access to your library.
Features are independent modules. Disable what you do not need. New functionality can be added cleanly without touching the core.
Electron desktop app runs on Mac, Windows, and Linux. Server runs in Docker — identical dev and production environments.
Well-documented REST API. New integrations can be added by any developer on the team without touching the core codebase.
Reads and writes NML, Rekordbox XML, and Serato formats. Importing from or exporting to your DJ software is a first-class feature.
| Desktop app | Electron (Node.js + Chromium) — Mac, Windows, Linux |
| Central API | PHP 8.3 + Slim 4 — REST, hosted in Docker on Proxmox / Portainer |
| Central DB | MariaDB 11 — on-premise, no cloud |
| Local DB | SQLite — per-machine index, syncs with central API |
| Server agent | Node.js — watches NAS storage, processes analysis jobs |
| Audio analysis | audiowaveform (BBC), aubio, ffmpeg — open source CLI tools |
| Waveform UI | Wavesurfer.js — renders from pre-generated peak data |
| Audio engine | Web Audio API — playback, EQ, tempo in the Electron renderer |
| AI integration | Anthropic Claude API — cataloging, playlist generation, QC (Phase 2) |
| Infrastructure | Docker Compose — identical dev and prod, deployed via Portainer |
Everything required for daily use. The working core that all future phases build on top of.
Analysis depth, AI integration, and the tools that turn the library into an active part of your preparation workflow.
Suggest genres, moods, energy levels, and custom tags based on metadata and audio analysis results. Flags inconsistencies — different artist spellings, missing album art, incomplete tagging.
Natural language prompts: "2 hour warm-up set, 120–128 BPM, melodic, Camelot key-compatible" — Claude queries your library and builds a sequenced playlist with transition logic.
Identify duplicate tracks with different filenames, flag unanalysed tracks before a gig, surface tracks with BPM values that look wrong relative to genre, suggest metadata corrections.
Generate or enrich track descriptions, label history, artist bios, and release context. Useful for building set notes or sharing tracklists with context attached.
Turning the platform outward — mobile access, advanced ML, ecosystem connections, and multi-user support.
offtherecord reads and writes standard formats used by every major DJ platform. It is not a replacement for any of them — it is a layer that connects them and keeps your data consistent across all of them.
Every component talks to the central API over your always-on VPN. USB drives have no agent — the Electron app on whichever machine they are plugged into acts as their proxy.
The core scaffold is built. The following areas are where contributors can pick up clearly scoped work without needing to understand the full codebase.
To avoid relitigating architecture in early PRs — these are settled: