How angle-brackets/melomaniac works
Melomaniac is a local-first music player whose central workflow is ingesting audio into a content-addressed library, organizing tracks into versioned playlists, and playing them across desktop and iOS. Playlist branches, commits, forks, and merges preserve history; LAN sync exchanges changes and media with paired devices. Spotify import, metadata editing, listening statistics, and storage management are complementary product branches. The README describes these capabilities; sampled Rust and UI excerpts support only selected storage, audio, startup, and UI-to-command links, so uncertain internal wiring is omitted.
Main entry points: storage.rs Storage commands · db.rs Library database · lib.rs LAN sync · index.ts App state
Components 28
Player experience
- App entry
src/App.tsx - Desktop UI
src/desktop/DesktopApp.tsx - Mobile UI
src/mobile/MobileApp.tsx - App state
src/store/index.ts - Playback state
src/store/playbackSlice.ts - Queue and shuffle
src/store/queueSlice.ts
Library and playlists
- Storage commands
src-tauri/src/storage.rs - Audio ingestion
src-tauri/crates/storage/src/ingest.rs - Blob store
src-tauri/crates/storage/src/cas.rs - Library database
src-tauri/crates/storage/src/db.rs - Playlist history
src-tauri/crates/storage/src/tree.rs - Metadata editor
src-tauri/src/editor.rs - Listening stats
src-tauri/src/stats.rs
Platform services
- Audio commands
src-tauri/src/audio.rs - Audio bridge
src-tauri/crates/audio/src/lib.rs - Desktop audio
src-tauri/crates/audio/src/desktop/audio.rs - iOS audio
src-tauri/crates/audio/src/ios.rs
Import and sync
- Downloader
src-tauri/src/downloader.rs - Spotify integration
src-tauri/src/spotify.rs - Track matching
src-tauri/src/matching.rs - Sync commands
src-tauri/src/sync.rs - LAN sync
src-tauri/crates/sync/src/lib.rs - Merge engine
src-tauri/crates/sync/src/merge.rs - OAuth bridge
src-tauri/crates/oauth/src/lib.rs
Other components
- Listener
- Spotify
- Paired device
- Audio output
Connections 33
- Listener → App entry: uses
- App entry → Desktop UI: selects platform
- App entry → Mobile UI: selects platform
- Desktop UI → App state: updates state
- Mobile UI → App state: updates state
- App state → Playback state: holds state
- App state → Queue and shuffle: holds state
- Playback state → Audio commands: invokes
- Audio commands → Audio bridge: controls
- Audio bridge → Desktop audio: selects desktop
- Audio bridge → iOS audio: selects iOS
- Desktop audio → Audio output: plays audio
- iOS audio → Audio output: plays audio
- Desktop UI → Storage commands: invokes
- Mobile UI → Storage commands: invokes
- Storage commands → Audio ingestion: ingests files
- Audio ingestion → Blob store: writes blobs
- Audio ingestion → Library database: indexes tracks
- Storage commands → Blob store: reads and writes
- Storage commands → Library database: reads and writes
- Storage commands → Playlist history: updates history
- Metadata editor → Library database: updates metadata
- Metadata editor → Blob store: writes artwork
- Downloader → Audio ingestion: ingests download
- Spotify integration → OAuth bridge: authenticates
- Spotify integration → Spotify: requests account data
- Track matching → Library database: matches tracks
- Sync commands → LAN sync: dispatches sync
- LAN sync → Merge engine: merges changes
- LAN sync → Paired device: exchanges data
- LAN sync → Blob store: transfers blobs
- LAN sync → Library database: updates records
- Listening stats → Library database: reads play history