Fela Maslen 2de4f6919f refactor: smaller (partial) state update action payloads 4 vuotta sitten
..
public 6ae2b251e3 Refactor/project structure (#3) 5 vuotta sitten
src 2de4f6919f refactor: smaller (partial) state update action payloads 4 vuotta sitten
.dockerignore 3810564d53 feat: continuous integration and kubernetes config 5 vuotta sitten
.env.example a958d33941 feat: skip to next / previous song 5 vuotta sitten
.env.test 6ae2b251e3 Refactor/project structure (#3) 5 vuotta sitten
.eslintrc.js 1b15dfcbfe feat: play queue 5 vuotta sitten
.gitignore 6ae2b251e3 Refactor/project structure (#3) 5 vuotta sitten
.prettierrc.js 6ae2b251e3 Refactor/project structure (#3) 5 vuotta sitten
Dockerfile 3810564d53 feat: continuous integration and kubernetes config 5 vuotta sitten
Makefile 28a2fb8cd1 feat: grouped songs and queue position indicator 5 vuotta sitten
README.md 6ae2b251e3 Refactor/project structure (#3) 5 vuotta sitten
builder.Dockerfile 34e4e59b50 fix: add Makefile to image 5 vuotta sitten
nginx.conf 3810564d53 feat: continuous integration and kubernetes config 5 vuotta sitten
package.json 69c2536819 feat: basic mobile UI 5 vuotta sitten
tsconfig.json 6ae2b251e3 Refactor/project structure (#3) 5 vuotta sitten
yarn.lock 69c2536819 feat: basic mobile UI 5 vuotta sitten

README.md

gmus-web

This is a frontend web app for use with the gmus backend.

Scripts

yarn start

Runs the app in the development mode.

yarn test

Runs tests

yarn build

Builds app

Architecture

Global app

This is the main part of the app. It is responsible for handling:

  • Global state such as which song is playing, and the current time
  • Connections to the API, through a websocket
  • Sharing state with other clients, and responding to updates from the API
  • Playing music, through an HTML element
  • UI

    This is the part of the app which implements user interaction. It is responsible for handling:

    • User input, to decide which actions to take
    • Display, to let the user know the state of things

    UIs follow a common model and are built into separate bundles, then lazily loaded.

    The following UIs are implemented:

    cmus

    This is based heavily on the cmus ncurses-based music player, and is essentially a web-based client with vim-like bindings for navigation.