Fela Maslen c85a22552e feat: drop privileges in web dockerfiles 5 năm trước cách đây
..
public 6ae2b251e3 Refactor/project structure (#3) 5 năm trước cách đây
src 85288dba5b feat: increased keyboard input FPS to 60 5 năm trước cách đây
.dockerignore b60642b949 feat: multistage build with nginx container serving frontend 5 năm trước cách đây
.env.example a958d33941 feat: skip to next / previous song 5 năm trước cách đây
.env.test 6ae2b251e3 Refactor/project structure (#3) 5 năm trước cách đây
.eslintrc.js 1b15dfcbfe feat: play queue 5 năm trước cách đây
.gitignore 6ae2b251e3 Refactor/project structure (#3) 5 năm trước cách đây
.prettierrc.js 6ae2b251e3 Refactor/project structure (#3) 5 năm trước cách đây
Dockerfile c85a22552e feat: drop privileges in web dockerfiles 5 năm trước cách đây
Makefile 3c8d2769c1 feat: more make commands to build/push/lint 5 năm trước cách đây
README.md 6ae2b251e3 Refactor/project structure (#3) 5 năm trước cách đây
builder.Dockerfile c85a22552e feat: drop privileges in web dockerfiles 5 năm trước cách đây
nginx.conf c85a22552e feat: drop privileges in web dockerfiles 5 năm trước cách đây
package.json 1b15dfcbfe feat: play queue 5 năm trước cách đây
tsconfig.json 6ae2b251e3 Refactor/project structure (#3) 5 năm trước cách đây
yarn.lock 1b15dfcbfe feat: play queue 5 năm trước cách đây

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.