tubo

Tubo is a streaming front-end focused on bringing the NewPipe experience to the web. It aims at providing a clean and simple user interface to consume media from various streaming platforms.

Installation

There's a Docker Compose file available which you can run locally like this:

cd /path/to/tubo
docker compose up -d

Configuration

The main configuration file for all services lies in resources/config.edn. You can override this file with your preferred settings. If you use Docker you can use environment variables to configure certain deployment settings like the port where a service is running, or for settings which don't have a corresponding environment variable you can create a bind mount to a custom configuration file in the backend service:

services:
  backend:
    # ...
    volumes:
      - /path/to/your/config.edn:/app/resources/config.edn

Development Setup

To get a development environment set up, enter the Nix dev shell, which will install front-end dependencies automatically:

nix develop

To start necessary processes alongside the application (database, scripts, etc.), you'll need to invoke the following in the project root:

# Add `-- -D` if you want to detach the processes
nix run .

You can now access the database like this:

psql

Or by accessing a local pgweb instance in your browser at http://localhost:8081

CLI

To start the front-end development server with hot-reload support, run:

clojure -M:dev:cljs watch frontend

You can now access it in your browser at http://localhost:8020

To start the API, run:

clojure -M:run

You can now check the API documentation at http://localhost:3000/api-docs

REPL

You can also work on Tubo using an interactive environment like CIDER. Go to any Clojure(Script) source file in the project, invoke M-x cider-jack-in-clj&cljs and you'll enter a live REPL.

You can then invoke this to start the system:

user=> (go)