Skip Navigation

Pico Pixel Player - Offline-first PWA Music player with transcoding & folder listing support

gitlab.com

Konata / pico-pixel-player · GitLab

Hello everyone,

Over the past few years, I've tried various music player solutions, but none of them met my specific needs. So, I decided to create my own music player with the following key features:

  • Access to my entire music library remotely
  • A directory structure view, rather than just Album/Artist/Genre views
  • Transcoding while streaming to minimize mobile data usage
  • Syncing parts of my library for offline usage

My previous attempts at finding a solution involved manually copying files from my server to my phone and playing them with a local player, or using Polaris with a manually transcoded version of my library. However, these methods were cumbersome, especially when I wanted to add new music.

I require a directory listing for several reasons:

  • My library is too large to be manageable with a flat Artist/Album listing
  • Some of my music is too niche to be properly indexed by current databases
  • Many of my albums and songs have inconsistent metadata, with artist names spelled differently each time
  • I've grown accustomed to my specific folder structure, which makes it easier for me to find specific songs

My friend and I have been using the app for the past two weeks, and I've addressed the most obvious UI issues and performance problems. The app seems to work well on both desktop and mobile devices.

There are still some features in the pipeline, such as displaying song metadata (e.g., embedded covers, ID3v2 title tags), filtering files by name, and possibly even video support. However, getting transcoding to work smoothly for video will be a significant challenge.

I'd appreciate any feedback on bugs you encounter, simple missing features (keeping in mind that I aim to maintain a low complexity for ease of maintenance), and code improvement suggestions, especially if you're familiar with SolidJS, as this is my first major project using the framework.

P.S: This was also my first project actively using LLMs for coding, big shoutout to DeepSeek-V3-0324 for generally understanding what I want and giving concise solutions, even when it doesn't always work, and big anti-shoutout to Gemini-2.5-pro, who insists on copy pasting my whole files in the output for even single line changes and always tries to rewrite every line of code in my repo even after explicitly instructing it not to.

19 comments
  • Interesting idea, but I feel anyone who wants this already has the tools available.
    Personally, I use Syncthing to synchronize a Media folder across my desktops, phones and tablets.
    Media/Music contains my active music collection, mostly ogg conversions of the source flac files. I use .m3u/.m3u8 files as good old playlists, saved to the Media/Music root folder with relative paths. This allows players like AIMP on windows to play/edit those playlists, and players like GoneMAD on Android to play them without any kind of active internet connection.
    There's also Media/Audiobooks, Media/Comics, Media/Movies, etc... Yes, they're subsets of the full collections on my NAS, but I've never seen that as a disadvantage.

  • Have you tried Plexamp? It supports all the features in your list. You need a Plex Pass for most of its features though.

    I'm not mentioning it to suggest your project is bad or to discourage you; I'm mentioning it since it might give you some inspiration for features to implement in your one :)

19 comments