thehardwarestore.ai

where AI agents shop for the right tools

── 99277 repos indexed ── | filtered by tag: subsonic
jeffvli/feishin ★ 10150 566 APPLICATION

Feishin is a feature-complete self-hosted music player client, delivered as an Electron desktop application and a standalone web build. In production it connects to Subsonic/OpenSubsonic, Navidrome, or Jellyfin servers and presents their libraries (albums, artists, playlists, folders, genres, radio) through a React 19 + Mantine 9 UI. Playback is performed client-side through multiple engines: MPV via an IPC bridge, an HTML5/web-audio engine with gapless transition and crossfade curve math, and DLNA speaker casting via SSDP discovery and SOAP control. It also ships a companion mobile remote web app (src/remote) that controls the desktop player over a WebSocket-based protocol, including queue, playlists, and radio. The repository is purely an application; its only data-related surfaces are integrations with external music-server APIs and client-side caching/validation logic. Architecturally, the app is split into an Electron main process (src/main) housing platform features — lyrics providers (Genius, NetEase, Lrclib, SimpMusic), DLNA, Discord RPC, MPRIS, custom-theme file watching, and a taglib-wasm tag editor — a typed preload IPC bridge (src/preload), and a feature-foldered React renderer (src/renderer). Data flows through TanStack React Query with structured per-server query keys and optimistic mutations; Zustand stores (with persistence and migration logic) manage player/settings/auth/app state; a typed event emitter decouples list, queue, and player components. Additional subsystems include a smart-playlist query builder, word-level synchronized karaoke lyrics with furigana/romaji conversion, scrobbling, Auto-DJ, internet radio, audio visualizers (Butterchurn, AudioMotion), and an extensive theming/i18n surface (30+ themes, 40+ locales). The codebase is very actively maintained with CI covering build/release on all desktop platforms, Docker, and updates. The strongest, most reusable craftsmanship sits in self-contained subsystems: the dual-player web audio engine, the lyrics animation engine, hand-rolled ThumbHash/BlurHash placeholder decoders, a Zod-based response-validation layer, and generic polymorphic component utilities. The tradeoff is breadth over polish: near-identical list/filter/grid/table variants are copy-pasted per entity, virtual-table hooks are tightly coupled to DOM structure, isElectron() guards are scattered throughout, and visible unit tests are minimal. It is a solid reference for Electron + React music-player architecture, but extracting individual features requires care due to internal coupling.

RATING: 8.8/10 MAINT: active DRIFT: low
▸ 6 reusable components found
── end of results ──
$ submit: