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)