{"id":13928815,"url":"https://github.com/peguerosdc/subplayer","last_synced_at":"2025-07-19T10:32:01.024Z","repository":{"id":37772026,"uuid":"197639544","full_name":"peguerosdc/subplayer","owner":"peguerosdc","description":"A music player frontend compatible with Subsonic backends","archived":false,"fork":false,"pushed_at":"2021-01-18T07:26:43.000Z","size":5370,"stargazers_count":87,"open_issues_count":2,"forks_count":11,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-08-08T18:20:04.384Z","etag":null,"topics":["airsonic","audio","audio-streaming","home-media","music","music-player","music-streaming","react","rsuite","self-hosted","subsonic","subsonic-client"],"latest_commit_sha":null,"homepage":"https://subplayer.netlify.app/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/peguerosdc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-07-18T18:42:26.000Z","updated_at":"2024-07-27T09:19:28.000Z","dependencies_parsed_at":"2022-09-01T13:21:27.582Z","dependency_job_id":null,"html_url":"https://github.com/peguerosdc/subplayer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peguerosdc%2Fsubplayer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peguerosdc%2Fsubplayer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peguerosdc%2Fsubplayer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peguerosdc%2Fsubplayer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peguerosdc","download_url":"https://codeload.github.com/peguerosdc/subplayer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226588829,"owners_count":17655794,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["airsonic","audio","audio-streaming","home-media","music","music-player","music-streaming","react","rsuite","self-hosted","subsonic","subsonic-client"],"created_at":"2024-08-07T18:01:48.981Z","updated_at":"2024-11-26T17:31:00.316Z","avatar_url":"https://github.com/peguerosdc.png","language":"JavaScript","funding_links":[],"categories":["music"],"sub_categories":[],"readme":"# Subplayer\n\n[![codecov](https://codecov.io/gh/peguerosdc/subplayer/branch/master/graph/badge.svg)](https://codecov.io/gh/peguerosdc/subplayer)\n[![Build Status](https://travis-ci.com/peguerosdc/subplayer.svg?branch=master)](https://travis-ci.com/peguerosdc/subplayer)\n![Docker Pulls](https://img.shields.io/docker/pulls/peguerosdc/subplayer)\n\nThis is a frontend application designed to be a simple, functional and nice looking web player to be used with a Subsonic backend (tested with [spl0k/supysonic](https://github.com/spl0k/supysonic) and [deluan/navidrome](https://github.com/deluan/navidrome)).\n\n![Overview](/docs/overview.png)\n\nLive Demo: [Subplayer at Netlify](https://subplayer.netlify.app/)\n\n## Features\n\n- Play and seek audio\n- View/create/edit playlists\n- Add/remove songs from Starred\n- Search artists/albums/songs\n- Browse your music by Artist, Albums and Genres (only compatible with v1.13.0)\n- Star/unstar albums\n- Scrobble\n- Add/Remove from queue\n- Theming\n\n### Building custom themes\n\nBy default, the only themes available are Blue, Orange, Green and Grey (all in light and dark mode). If you want to create your custom themes, you can edit `/themes.config.js` with your own object to change how Rsuite will look like. Each theme must be named starting with either \"light\" or \"dark\" to let the compiler know which settings to load.\n\nTo see the list of variables that you can define for customization, visit [RSuite's documentation](https://rsuitejs.com/en/guide/themes/).\n\n**NOTE:** the tool that Rsuite provides to create custom themes is not designed to work with `create-react-app` (which is how this project was built), so the implementation here is considered a hack and, as a result, it has (as far as I found) two downsides:\n1) you can't create a lot of themes as the compiler will run out of memory (that's why I only defined 4 colours by default) and\n2) on the first run, you will see a blank page. After reloading, the application will work as expected.\n\n## Installation\n\n### Running the source code\n\nClone the repository and run from the root folder:\n\n```\n$ yarn install\n$ yarn start\n```\n\n### Docker installation\n\nTo build the image yourself:\n\n```\n$ docker build . -t peguerosdc/subplayer\n```\n\nOr using the experimental `buildx` to build (and push) for multiple platforms:\n\n```\n$ docker buildx build --platform linux/arm64,linux/amd64 --push -t peguerosdc/subplayer .\n```\n\nTo run the image:\n\n```\n$ docker run --name mysubplayer \\\n    -p 8000:80 \\\n    --restart unless-stopped \\\n    -d peguerosdc/subplayer\n```\n\nTo stop:\n\n```\n$ docker stop mysubplayer\n```\n\n## TODO\n- Implement CI to push Docker image automatically when merged to `master`\n- There are some `TODO`s in the unit tests, but most features are tested.\n- `feature`: Rearrange items in queue. I tried this with the current rsuite's Table but didn't like the final implementation. I am thinking in (someday) writing a new `\u003cSongsTable/\u003e` from scratch to add all the features I want.\n- Re-work `MusicPlayer`.\n- How to test components with hooks without 1) using `mount` and 2) re-doing all the unit tests with React Testing Library?\n\n## Contributions\nAny TODO item, any bug you find and want to fix, any architecture/performance/Docker improvements, any new feature you think would be cool to have is welcome :) Just keep in mind that this project is meant to be a lightweight application.\n\n**NOTE**: if you want to add new features, please implement at least the basic unit tests you can think of. Pull-requests will not be merged without testing.\n\n## Acknowledgements\n- Favicon made by Freepik from www.flaticon.com\n- Using [rsuite/rsuite](https://github.com/rsuite/rsuite) UI components.\n\n## License\n\nLicensed under the [GNU General Public License v3.0](https://github.com/peguerosdc/rsuite-sonicplayer/blob/master/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpeguerosdc%2Fsubplayer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpeguerosdc%2Fsubplayer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpeguerosdc%2Fsubplayer/lists"}