Harmony is a music manager designed specifically for old-school DJs. It allows you to organize and manage your music collection efficiently.
- 🎵 Easy music management with automated tasks
- 📋 Playlist creation and organization
- ⚡ High-performance drag & drop - Instant track reordering (< 10ms) and adding tracks to sidebar playlists
- 🎨 Custom drag ghost showing track information
- 🔄 Automatic background synchronization
- 🔗 Track URLs - Store and access track pages from Beatport, Traxsource, and Bandcamp
- 🎧 Intuitive interface designed for DJs
- 🎹 OpenKey Harmonic Mixing - Track keys are automatically formatted and visually color-coded according to the OpenKey standard for seamless harmonic mixing
- 🐛 Pre-Cue Playback Fix - Resolved an issue where playback would skip incorrectly by properly applying the pre-cue position dynamically and cleaning up event listeners to prevent memory leaks.
📸 Click to view screenshots
Manage your entire music collection with powerful search and filtering capabilities.
Edit track metadata, find tag candidates from Beatport/Traxsource/Bandcamp, replace files, and manage ratings.
Identify and manage duplicate tracks in your collection with advanced comparison tools.
Get track recommendations from Beatport
- Desktop Framework: Electron with TypeScript
- Frontend: React 18 + Vite + Mantine UI
- State Management: Zustand
- Database: Drizzle ORM + SQLite (better-sqlite3)
- Build Tools: electron-vite, electron-builder
- Package Manager: pnpm
pnpm installpnpm run dev # Start development mode with hot reload
pnpm start # Preview built app# For windows
pnpm run build:win
# For macOS
pnpm run build:mac
# For Linux
pnpm run build:linux
# Current platform
pnpm run build
# Production release
pnpm run releasepnpm run lint # ESLint with auto-fix
pnpm run format # Prettier auto-format all files
pnpm run typecheck # Run both node + web type checkspnpm test # Run tests in watch mode
pnpm run test:run # Run all tests once (CI mode)
pnpm run test:ui # Open Vitest UI
pnpm run test:coverage # Run tests with coverage report- AGENTS.md - Complete project documentation, code style, architecture, available skills
- .agents/skills/ - Specialized AI skills for Electron, React, Mantine, Zustand, code review, and more
If you would like to contribute to Harmony, please follow these steps:
- Fork the repository
- Create a new branch (
git checkout -b feature-branch) - Read AGENTS.md for code style guidelines, architecture notes, and best practices
- Make your changes following the project conventions
- Run
pnpm run lintandpnpm run typecheckbefore committing - Commit your changes (
git commit -m 'Add new feature') - Push to the branch (
git push origin feature-branch) - Open a pull request
- Import organization: Node/Electron built-ins → External packages → Internal modules → Relative imports
- Formatting: Run
pnpm run format(Prettier with single quotes, 120 line width) - TypeScript: Use interfaces for objects, type aliases for unions, avoid
any - Logging: Use
electron-login main/preload (neverconsole.*) - Error handling: Always log errors, use try-catch for async operations
See AGENTS.md for complete guidelines.
This project is licensed under the MIT License. See the LICENSE file for details.



