a simple web player for subsonic tinysub.devins.page
subsonic navidrome javascript
9
fork

Configure Feed

Select the types of activity you want to include in your feed.

JavaScript 84.9%
CSS 7.2%
HTML 7.0%
Nix 0.9%
Shell 0.1%
196 1 0

Clone this repository

https://tangled.org/devins.page/tinysub https://tangled.org/did:plc:3xpaniu6rs7fygzthgmtuv7c/tinysub
git@knot.devins.page:devins.page/tinysub git@knot.devins.page:did:plc:3xpaniu6rs7fygzthgmtuv7c/tinysub

For self-hosted knots, clone URLs may differ based on your setup.

Download tar.gz
README.md

note: rewrite#

for a little while i've been working on a rewrite in TypeScript+Vite to improve the devel process, stability, and have a proper build process. later i also want to maybe migrate to Solid.js or Svelte (still deciding between the two), but that'll be for a later time. but anyways, this should be ready in ~a few days to a week or two.

i recommend holding off on PRs for now as there may soon be pretty heavy structural changes to the codebase. don't worry, the look and feel of the application will stay pretty much the exact same! ;P this is just to improve maintainability and performance as the app gets bigger.

tinysub#

tinysub is a simple web player for Open Subsonic compatible music servers, such as Navidrome and Gonic. i don't really like Navidrome's web client for various reasons, and i wanted something akin to Strawberry Music Player, but i could run anywhere.

to use, visit https://tinysub.devins.page, or clone to your own machine and open /src/index.html in a browser. it's just plain JavaScript, HTML, and CSS, nothing fancy.. you can also build to a single index.html with monolith by running nix build (manifest for PWA doesn't seem to work with monolith though)

if you just want to test out a demo, try the navidrome demo server:

  • host: https://demo.navidrome.org
  • username: demo
  • password: demo

this is not feature-complete. this project is still an early work-in-progress and i am working on it in my free time. please do not expect it to be fully stable just yet. for discussion, use issues or feel free to join my Discord :)

screenshot of tinysub 1.6.2

faq#

i can't log in!#

if you are trying to connect to devices on your local network or Tailscale, it may not work. on Chromium, i was able to log into my server through Tailscale by using it's IP address (not magicDNS), but i have no clue if this works in other browsers.

offline support?#

at the current moment, tinysub requires an active connection to the server to work at all.

in the future, i plan on providing desktop builds of tinysub through Tauri, which would allow for adding desktop-exclusive features such as full library sync and offline usage.

the web hosted version of tinysub is likely never going to get these features, as i believe there are limits to how much you can store in IndexedDB. i may be able to store the full library metadata offline, but whats the point if you can only cache a few songs?

mobile support?#

ehhhh kinda. it does have responsive design, so menus do shift and resize based on whether you're on mobile or desktop, however, tinysub is mostly designed to look and feel like a desktop application, and also has certain controls that are not accessible on mobile (such as dragging rows around, selecting multiple items with shift, etc).

for alternative Subsonic clients: on iOS, i heavily recommend Arpeggi (whenever the TestFlight opens back up) or Amperfy. on Android, i've heard Symfonium is amazing.

todo#

  • ✓ playback
  • ✓ queue system
    • ✓ selection
    • ✓ context menu
    • ✓ drag and drop
  • ✓ authorization
  • ✓ settings
  • ✓ very high performance, even with massive queues
  • ✓ powerful but simple ui
  • ✓ favorites management
  • ✓ shuffle
  • ✓ scrobbling
  • ✓ synced lyrics
  • ✓ img caching
  • ✓ keyboard shortcuts
    • press ? to see shortcuts
  • ✓ looping
  • ✓ sort by
  • ✓ pwa (not offline, but installable)
  • ✓ focus management
  • ✓ search
  • ✓ undo/redo
  • playlist management
  • replaygain
  • language support
  • customizable table column toggles

credits#