Files
Resonant/README.md
T
cyph3rasi 38b140905f Build Resonant v0.1 as a polished single-user Tauri/OpenSubsonic music player with demo playback, responsive library browsing, search, favorites, queue, server setup, tests, and docs
Hop-State: A_06FNDQKBYQT60ENR92VY6KG
Hop-Proposal: R_06FNDQJ64YSD232PJ7AT47R
Hop-Task: T_06FNDK6YRGJ4TEATJEC6EQR
Hop-Attempt: AT_06FNDK6YRMRZ1VHNB189B48
2026-07-12 08:07:25 -07:00

2.8 KiB

Resonant

Your library, wherever you listen.

Resonant is a desktop-first music player for personal, self-hosted collections. It connects directly to Navidrome and other OpenSubsonic-compatible servers while keeping the listening experience calm, immediate, and separate from server administration.

What works in v0.1

  • A responsive library home with albums, tracks, favorites, search, and queue management
  • Functional playback controls with seek, volume, previous, and next actions
  • An offline demo library with locally synthesized audio, so the app is useful immediately after cloning
  • OpenSubsonic token authentication, connection testing, album loading, random-track loading, artwork, and streaming URLs
  • A Tauri 2 desktop shell for macOS, Windows, and Linux development
  • Keyboard-visible controls, reduced-motion support, semantic labels, and a WCAG 2.2 AA target

The server password is held only in memory. Resonant remembers the server address and username locally, but secure credential persistence is intentionally deferred until the desktop keychain integration is added.

Run it

Requirements: Node.js 22+, Rust 1.85+, and the platform prerequisites for Tauri 2.

npm install
npm run dev

To run the desktop shell:

npm run tauri dev

To validate the full project:

npm run check

Connect a server

Open the server control in the lower-left corner, then enter the URL and credentials for a Navidrome or OpenSubsonic server. Browser development requires the server to allow the development origin. The Tauri networking layer will replace browser fetch before packaged distribution so remote libraries do not depend on browser CORS policy.

Architecture

Resonant desktop client
├── React product interface
├── Playback and queue state
├── OpenSubsonic client
│   ├── salted token authentication
│   ├── library and artwork requests
│   └── authenticated stream URLs
└── Tauri shell

Navidrome or another OpenSubsonic server
├── scans and indexes music
├── owns metadata and artwork
└── streams or transcodes audio

The protocol boundary is deliberate. Resonant owns the product experience without forking the media engine, and the server can be replaced as long as it speaks OpenSubsonic.

Next milestones

  1. Move remote requests into Tauri's HTTP plugin and store credentials in the OS keychain.
  2. Add album and artist detail routes with deterministic library pagination.
  3. Persist the queue, favorites, and playback position, then synchronize favorites back to the server.
  4. Add native media keys, system now-playing metadata, ReplayGain, and gapless transition support.
  5. Bundle an optional managed Navidrome sidecar for the “choose a folder” setup path.

Product direction and accessibility principles live in PRODUCT.md.