Giter Site home page Giter Site logo

l1kw1d / subplayer Goto Github PK

View Code? Open in Web Editor NEW

This project forked from peguerosdc/subplayer

0.0 1.0 0.0 5.24 MB

A music player frontend compatible with Subsonic backends

Home Page: https://subplayer.netlify.app/

License: GNU General Public License v3.0

HTML 0.41% JavaScript 97.64% Dockerfile 0.09% Less 1.85%

subplayer's Introduction

Subplayer

codecov Build Status Docker Pulls

This 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 and deluan/navidrome).

Overview

Live Demo: Subplayer at Netlify

Features

  • Play and seek audio
  • View/create/edit playlists
  • Add/remove songs from Starred
  • Search artists/albums/songs
  • Browse your music by Artist, Albums and Genres (only compatible with v1.13.0)
  • Star/unstar albums
  • Scrobble
  • Add/Remove from queue
  • Theming

Building custom themes

By 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.

To see the list of variables that you can define for customization, visit RSuite's documentation.

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:

  1. 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
  2. on the first run, you will see a blank page. After reloading, the application will work as expected.

Installation

Running the source code

Clone the repository and run from the root folder:

$ yarn install
$ yarn start

Docker installation

To build the image yourself:

$ docker build . -t peguerosdc/subplayer

Or using the experimental buildx to build (and push) for multiple platforms:

$ docker buildx build --platform linux/arm64,linux/amd64 --push -t peguerosdc/subplayer .

To run the image:

$ docker run --name mysubplayer \
    -p 8000:80 \
    --restart unless-stopped \
    -d peguerosdc/subplayer

To stop:

$ docker stop mysubplayer

TODO

  • Implement CI to push Docker image automatically when merged to master
  • There are some TODOs in the unit tests, but most features are tested.
  • 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 <SongsTable/> from scratch to add all the features I want.
  • Re-work MusicPlayer.
  • How to test components with hooks without 1) using mount and 2) re-doing all the unit tests with React Testing Library?

Contributions

Any 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.

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.

Acknowledgements

License

Licensed under the GNU General Public License v3.0.

subplayer's People

Contributors

peguerosdc avatar dependabot[bot] avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.