2026-03-24 14:03:44 +00:00
2026-03-23 11:13:16 +00:00
2024-10-07 08:12:05 +01:00
2026-03-24 14:03:44 +00:00
2026-03-23 17:05:52 +00:00
2026-03-13 10:52:01 +00:00
2026-02-16 18:06:47 +00:00
2026-03-20 23:26:54 +00:00
2026-03-13 11:49:53 +00:00
2025-10-16 20:46:22 +01:00
2025-10-07 17:21:39 +03:00
2026-03-07 18:57:18 +00:00
2026-03-20 23:38:18 +00:00
2026-02-05 11:14:20 +00:00
2026-03-22 08:21:59 +00:00
2026-03-20 23:38:18 +00:00
2026-03-23 17:05:52 +00:00

Music Library

Features

  • Add records from MusicBrainz, with optional override of specific pieces of data
  • Manage a collection and a wishlist of records, with ways to quickly search and filter based on records' metadata
  • Integration with Last.fm:
    • display latest scrobbles, and where possible connect them with records in the collection or wishlist
    • scrobble a record
    • store a local copy of the complete scrobble history, and setup rules to fix its data as needed
    • audit scrobble data quality and identify tracks with missing MusicBrainz IDs
  • Some basic stats
  • All data stored in a single SQLite database for portability and ease of backup/restore

Screenshots

Stats

Stats

Collection

Collection

Searching for a record to add

Searching for a Record to add

Edit a record in the collection

Edit a record in the collection

View a record's details in the collection

View a record's details in the collection

View a record's tracklist

View a record's tracklist

Adding a record in the wishlist

Adding a record in the wishlist

View an artist's details

View an artist's details

View the scrobble activity

View the scrobble activity

Setup

The project is managed and configured via mise-en-place:

  • mise install will pull the correct Erlang, Elixir and Node.js versions
  • mise run dev:setup will setup dependencies and database structure

Important

The project uses Fluxon UI, so it requires a valid set of credentials. See the env section in mise.toml for the required environment variables.

It's recommended to use the git hooks included in the project. Install with:

mise generate git-pre-commit --write --task=dev:precommit

Environment configuration

Required environment variables for development are listed in mise.toml.

You can create a mise.local.toml with the required variables (sample values are included at the top of mise.toml).

For production, please see compose.yaml for a list of required variables.

Running the application

Start the Phoenix endpoint with mise run console (along with an attached IEx session).

Now you can visit localhost:4000 from your browser. The default password for development is change me.

Auditing Scrobble Data Quality

The application includes a Mix task to audit scrobbled tracks and identify data quality issues such as missing MusicBrainz IDs for artists and albums.

Running the Audit

# Audit all tracks
mix scrobble.audit

# Audit with detailed output including sample tracks
mix scrobble.audit --verbose

# Audit only artist issues
mix scrobble.audit --type artist

# Audit only album issues
mix scrobble.audit --type album

# Output as JSON for processing
mix scrobble.audit --format json

Understanding the Audit Report

The audit report shows:

  • Total number of scrobbled tracks
  • Artists with missing MusicBrainz IDs (grouped by artist name)
  • Albums with missing MusicBrainz IDs (grouped by album title and artist)
  • Track counts for each issue

Fixing Data Quality Issues

After identifying issues, you can:

  1. Create Scrobble Rules: Navigate to the Scrobble Rules page in the web interface and add rules to map artist or album names to their correct MusicBrainz IDs.

  2. Apply Rules: Use the "Apply Rules" button in the Scrobble Rules page to update existing tracks, or run in IEx:

    MusicLibrary.ScrobbleRules.apply_all_rules()
    
  3. Re-audit: Run the audit again to verify the fixes worked.

The application also provides helper functions in the MusicLibrary.ScrobbleActivity context:

  • count_tracks_missing_artist_musicbrainz_id/0
  • count_tracks_missing_album_musicbrainz_id/0
  • get_artists_missing_musicbrainz_id/1
  • get_albums_missing_musicbrainz_id/1

Deployment

The application is deployed via Coolify, using a Docker Compose strategy.

CI

See the .github folder.

Architecture

See the docs folder.

Favicons

This favicon was generated using the following graphics from Twitter Twemoji:

S
Description
No description provided
Readme 63 MiB
Languages
Elixir 77.4%
Python 10%
TypeScript 6.6%
HTML 3.7%
Shell 1.4%
Other 0.8%