SolidSonic is a modern, high-performance desktop music player for Subsonic and OpenSubsonic-compatible servers. Built with SolidJS and Electron, it offers a snappy, reactive user experience combined with flexible audio backends.
- Subsonic/OpenSubsonic Integration: Full support for your favorite music server backends.
- Flexible Audio Backends:
- HTML5 Audio: Standard web-based playback.
- MPV (Experimental): Robust playback via
node-mpvfor advanced formats and high quality.
- Reactive UI: A sleek, modern interface built with SolidJS and Tailwind CSS.
- MPRIS Support: Seamless integration with Linux desktop media controls.
- Advanced State Management: Powered by TanStack Query for efficient data fetching and caching.
- File-Based Routing: Clean and predictable navigation via TanStack Router.
- Cross-Platform: Ready for Windows, macOS, and Linux.
- Frontend: SolidJS
- Desktop Framework: Electron
- Routing: TanStack Router
- Data Fetching: TanStack Query
- Styling: Tailwind CSS
- Audio Backends: HTML5 Audio & MPV (via
node-mpv) - Linting/Formatting: Biome
- Build Tool: Vite
This project includes a Nix Flake for reproducible development environments and packaging.
If you have Nix installed with flakes enabled, you can enter a pre-configured development environment with all dependencies (Node.js, Bun, MPV, Electron, etc.) ready to go:
nix developTo build the SolidSonic package using Nix:
nix buildThe resulting binary will be available in ./result/bin/solidsonic.
- Node.js (latest LTS recommended)
- Bun (preferred for dependency management)
- MPV: Ensure
mpvis installed on your system and available in your PATH.
-
Clone the repository:
git clone https://github.com/imaviso/solidsonic.git cd solidsonic -
Install dependencies:
bun install # or npm install
Start the development server with Hot Module Replacement (HMR) and Electron:
npm run electron:devTo package the application for your current platform:
npm run electron:buildBuild for specific platforms:
npm run electron:build:winnpm run electron:build:macnpm run electron:build:linux
- Run tests:
npm run test - Lint & Format:
npm run check - Fix formatting:
npm run format
electron/: Main process logic, MPRIS integration, and preload scripts.src/: Renderer process (SolidJS application).src/components/: Reusable UI components.src/lib/: Core logic (API, Player, Auth, Settings).src/routes/: File-based route definitions.src/hooks/: Custom SolidJS primitives.
This project is licensed under the MIT License.

