/opentogethertube

Watch videos with your friends. The spiritual successor to TogetherTube, preserving the spirit of it's simple to use interface, while improving it's look, feel, and reliability.

Primary LanguageHTMLGNU General Public License v3.0GPL-3.0

OpenTogetherTube

CI/CD codecov Quality Gate Status Docker size

The easy way to watch videos with your friends.

https://opentogethertube.com/

Deployment

Prerequisites

This project targets node 12.

Setup

  1. Clone this repo.
git clone https://github.com/dyc3/opentogethertube.git
  1. Install redis

Ubuntu

sudo apt install redis
  1. Install dependencies.
npm install
  1. Copy and fill out the configuration file
cp env/example.env env/production.env

Please read the config docs here for which options are required.

  1. Build Vue files so they can be served statically.
npm run build
  1. Run database migrations
NODE_ENV=production-sqlite npx sequelize-cli db:migrate
  1. Run the server.
NODE_ENV=production npm start

You can also specify the port the server will listen on by setting the PORT environment variable.

PORT=8080 NODE_ENV=production npm start

Docker

See the Docker README

Contributing

Contributions are welcome. The current iteration is named "Firework", and you can see what's currently being worked on under the "projects" tab.

Setting up your dev environment

Prerequisites

This project targets the lastest LTS version of node.js.

Setup

  1. Fork this repo and clone it.
  2. In a terminal, navigate to the opentogethertube folder and run
npm install
  1. Next you need to set up your configuration. Start by copying the example config in the env folder to a new file called development.env
cp env/example.env env/development.env
  1. Create a new project on Google Cloud
  2. Add "YouTube Data API v3" and "Google Drive API" to the project
  3. Obtain a YouTube API key
  4. Obtain a Google Drive API key
    • Not necessary if you don't plan to stream videos from Google Drive, which you probably shouldn't do anyway because Google doesn't like that.
  5. Open env/development.env and replace API_KEY_GOES_HERE with the appropriate api key.
  6. Initialize your local database.
npx sequelize-cli db:migrate
  1. Install redis. This is used to store room state and user sessions across server restarts.

Testing

To run the test suite, run

npm test

How to run

This project has 2 main components: the client and the server. You can run both of them simultaneously using the command

Linux / Mac

npm run dev

Windows

npm run dev-windows

Sometimes, you may want to run them seperately so you can use breakpoints to debug. Using VSCode, this is trivial.

To start the server: Debug > Select "Launch Program" > Start

To start the client: npm run serve