Fela Maslen cb7cde25d7 feat: always set GO_ENV=development in make dev commands пре 5 година
..
cmd cb56f31d88 refactor: renamed backend and web client to gmus-backend and gmus-web пре 5 година
migrations cb56f31d88 refactor: renamed backend and web client to gmus-backend and gmus-web пре 5 година
pkg cb56f31d88 refactor: renamed backend and web client to gmus-backend and gmus-web пре 5 година
.dockerignore cb56f31d88 refactor: renamed backend and web client to gmus-backend and gmus-web пре 5 година
.gitignore cb56f31d88 refactor: renamed backend and web client to gmus-backend and gmus-web пре 5 година
Dockerfile cb56f31d88 refactor: renamed backend and web client to gmus-backend and gmus-web пре 5 година
Makefile cb7cde25d7 feat: always set GO_ENV=development in make dev commands пре 5 година
README.md cb7cde25d7 feat: always set GO_ENV=development in make dev commands пре 5 година
docker-compose.yml cb56f31d88 refactor: renamed backend and web client to gmus-backend and gmus-web пре 5 година
example.env cb56f31d88 refactor: renamed backend and web client to gmus-backend and gmus-web пре 5 година
go.mod cb56f31d88 refactor: renamed backend and web client to gmus-backend and gmus-web пре 5 година
go.sum cb56f31d88 refactor: renamed backend and web client to gmus-backend and gmus-web пре 5 година
init.sql cb56f31d88 refactor: renamed backend and web client to gmus-backend and gmus-web пре 5 година
test.env cb56f31d88 refactor: renamed backend and web client to gmus-backend and gmus-web пре 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=

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=

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

GET /songs?artist=

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

GET /song-info?id=

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