Fela Maslen 2de4f6919f refactor: smaller (partial) state update action payloads 4 年之前
..
certificates ab61154b2b feat: flutter mobile app 4 年之前
cmd 2ee38186c2 feat: separate deployment for file watcher 4 年之前
migrations 1eb02472df feat: remember errors when scanning files 4 年之前
pkg 2de4f6919f refactor: smaller (partial) state update action payloads 4 年之前
.dockerignore 6ae2b251e3 Refactor/project structure (#3) 5 年之前
.gitignore 6ae2b251e3 Refactor/project structure (#3) 5 年之前
Dockerfile 3810564d53 feat: continuous integration and kubernetes config 5 年之前
Makefile 2ee38186c2 feat: separate deployment for file watcher 4 年之前
README.md 66622a6d7a feat: shuffle mode 4 年之前
ci.env 3810564d53 feat: continuous integration and kubernetes config 5 年之前
docker-compose.yml b0eec02481 feat: automatic reconnect 4 年之前
example.env 6ae2b251e3 Refactor/project structure (#3) 5 年之前
go.mod c3729385ad feat: only update currentTime from automatic action 4 年之前
go.sum c3729385ad feat: only update currentTime from automatic action 4 年之前
init.sql 6ae2b251e3 Refactor/project structure (#3) 5 年之前
nginx.conf ab61154b2b feat: flutter mobile app 4 年之前
test.env 6ae2b251e3 Refactor/project structure (#3) 5 年之前

README.md

gmus-backend

This is the backend part of the music player, written in Golang.

Building

Run make build inside this directory. Binaries will be built and output to the bin directory (which will be created if it does not exist).

Testing

Run make test inside this directory, to run unit and integration tests.

Migrations

First, make sure the following environment variables are set:

  • POSTGRES_HOST
  • POSTGRES_USER
  • POSTGRES_PASSWORD
  • POSTGRES_PORT (optional, defaults to 5432)
  • POSTGRES_DATABASE

Then, run:

  • make migrate

Creating migrations

After getting the migrate CLI tool, run:

  • NAME=create_some_table make migrate.make

Components

Music scanner

This is intended to be run as a scheduled job. It will scan a directory and add relevant metadata to a PostgreSQL database.

Development usage

make run.scan

REST/WebSocket API

Development usage

make run.server

This is an HTTP server running the following endpoints:

GET /stream?songid=<id>

Streams an audio file based on the songid value in the query string.

GET /pubsub

Handles long-running client connections, initiating a websocket.

GET /artists

Fetches all artists, and outputs them in JSON format.

GET /albums?artist=<artist>

Fetches albums for a particular artist, and outputs them in JSON format.

GET /songs?artist=<artist>

Fetches songs for a particular artist, and outputs them in JSON format.

GET /song-info?id=<id>

Fetches info for a particular song, based on its ID, and outputs it in JSON format.

GET /next-song?id=<id>

Fetches next song info.

GET /prev-song?id=<id>

Fetches previous song info.

GET /shuffle-song?id=<id>

Fetches shuffled song info. Note that id is an optional query parameter specifying the currently playing song.