2
3
Fork
You've already forked cadja
1
A WIP music library indexer & database for DJs
  • Rust 99.1%
  • Nix 0.6%
  • Shell 0.3%
2025年12月23日 15:53:02 +01:00
assets v0.2.4 2024年10月02日 16:47:19 +02:00
crates Fix tokenizer wrongly handling escaped parantheses 2025年02月23日 16:50:03 +01:00
scripts Fix bump-version.sh running on nix 2024年09月27日 19:04:00 +02:00
.envrc Update flake.nix to use rust-toolchain.toml 2024年04月18日 19:01:33 +02:00
.gitignore Add default.nix file to build nix package 2024年09月27日 16:45:52 +02:00
Cargo.lock v0.2.4 2024年10月02日 16:47:19 +02:00
Cargo.toml Bump dependencies, update rust-toolchain to rust 1.80wq 2024年09月24日 17:17:49 +02:00
CHANGELOG.md Update CHANGELOG 2025年02月23日 16:51:27 +01:00
default.nix Dont use rustPlatform 2024年09月27日 16:45:52 +02:00
flake.lock Update shell.nix and flake.nix to have both flake and old way nix setup 2024年09月27日 16:45:52 +02:00
flake.nix Remove defaultPackage/App 2024年09月27日 18:59:26 +02:00
README.md README.md aktualisiert 2025年12月23日 15:53:02 +01:00
ROADMAP.md Update ROADMAP 2024年05月05日 21:41:21 +02:00
rust-toolchain.toml Bump dependencies, update rust-toolchain to rust 1.80wq 2024年09月24日 17:17:49 +02:00
shell.nix Add cargo-edit to devenv 2024年09月27日 19:10:19 +02:00
SPEC.md Update SPEC 2024年02月16日 02:10:06 +01:00



banner


Caja is a WIP project to bring an open source alternative to the Rekordbox PDB concept. It comes as a rust library to embed in your own project and with a cli tool to use from your terminal.

ATTENTION: This is not battle tested. Make sure you have a backup of your music library. Try at your own risk!

Current status

  • Simple (re)indexing
  • Simple query language to create smart playlists and search the index
  • Indexing playlists
  • Rebuilding smart playlists on change
  • Modifying metadata with caja
  • Many fields are missing

How to install

  1. make sure you have rustup/cargo installed
  2. clone this repo
  3. cd into it
  4. cargo install --path ./crates/caja

Examples

Indexing your music library

  1. Cd into your music folder.
  2. caja init
  3. caja scan

Search examples

  • caja search 'some test'
  • caja search 'artist:Foo'
  • caja search 'artist:"Foo & Bar"'
  • caja search 'filename:".mp3"'
  • caja search 'bpm:130..140'
  • caja search '#hypnotic #techno'
  • caja search '#hypnotic & (#groovy | bpm:>130)'
  • caja search 'tag:=0' find untagged files

Play query results with vlc:

caja search '#hypnotic' --output print0 | xargs -r0 vlc