A progressive web application to sing karaoke style together
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
The following software has to be installed on the system, to develop locally.
Docker
Docker-compose
yarn (Or npm)
Node.js
| Service | |||
|---|---|---|---|
| Song | (GET) /search/{artist} | ||
| Rooms | (GET) /rooms/new | (POST) /rooms/join | (POST) /rooms/leave |
| Queue | (GET) /songs | (POST) /songs/delete | (POST) /songs |
| Coordinator | (GET ws(s)://) /coordinator/ws |
To run the system, the following steps have to be taken.
Make sure that you have all env variables in .env files for the correct services.
Starting the system (From the root of the repository)
$ docker-compose up --build
or
$ ./start.shStopping the system (From the root of the repository)
$ docker-compose down
or
$ ./stop.shThe service is now accessable over www.karaokejam.localhost.
Starting the system with development capabilities (From the root of the repository) This will open some ports, so no hostname resolving has to be used. Also attaches volumes to the containers.
$ docker-compose -f ./docker-compose.yml -f ./backend/docker-compose.yml up --buildStarting only the frontend, with development capabilities:
$ cd frontend/
$ docker build -t frontend .
$ docker run -it -p 4040:4040 frontendor
$ cd frontend/
$ (yarn|npm) run startThe frontend will be accessible at localhost:4040, and it will use (http|https)://www.karaokejam.(localhost | online) as its backend, based on the production env or development env (NODE_ENV).
The tests can be run using a test script, this hosts redis and mongo and tests each service.
$ cd /backend/test
$ ./test.sh
Deployment is done with Gitlab CI, when pushing a new commit that passes the build and test phase it gets automatically deployed to production.
If you want to manually deploy, the following steps have to be made:
(Make sure your public key is on the deploy server)
$ ./build.sh
$ ./deploy.sh- Vuejs - The web framework used
- Docker - Container software
- Docker-compose - Container Management
- Traefik - Load balancer + service discovery
- Redis - Key value storage
- Mongodb - Document database
- Nginx - Web server
- Golang - The language for the backend
- Webpack - Javascript bundler
- Webpack-dev-server - Development web server
- Kevin van den Broek | 36760
- Martijn de Voogd | 36703
This project is licensed under the MIT License - see the LICENSE.md file for details
- Dr. Thomas Fankhauser
- Prof. Dr. Ansgar Gerlicher