transbeam logo: a laser warning sign in trans flag colors

transbeam

A low-latency file drop web app

## features - One-to-many transfer of large files - Simple web UI for sender and receivers - Receivers can begin downloading *immediately*, without needing to wait for the upload to finish - Receivers can also download after the upload is complete and the sender has gone offline - Easy to send multiple files at once - they're bundled into a zip file for receivers, with zero compression so extraction is quick - Sanitises filenames, using sensible non-obnoxious defaults that should be safe across platforms - Fires a laser beam that turns you trans ## configuration transbeam is configured with the following environment variables: - `TRANSBEAM_STORAGE_DIR`: path where uploaded files should be stored (default: `./storage`) - `TRANSBEAM_STATIC_DIR`: path where the web app's static files live (default: `./static`) - `TRANSBEAM_PORT`: port to listen on localhost for http requests (default: 8080) - `TRANSBEAM_MAX_LIFETIME`: maximum number of days files can be kept for (default: 30) - `TRANSBEAM_MAX_UPLOAD_SIZE`: maximum size, in bytes, of a fileset being uploaded (default: 16GiB) - `TRANSBEAM_MAX_STORAGE_SIZE`: maximum total size, in bytes, of all files being stored by transbeam (default: 64GiB) - `RUST_LOG`: log levels, for the app as a whole and/or for specific submodules/libraries. See [`env_logger`](https://docs.rs/env_logger/latest/env_logger/)'s documentation for details. ## running ### nix flakes ``` nix run git+https://git.xeno.science/xenofem/transbeam?ref=main ``` (The Nix package is wrapped with `TRANSBEAM_STATIC_DIR` set automatically to the correct Nix store path, so it'll serve the static files properly no matter what directory you run it from.) ### non-nix ``` git clone https://git.xeno.science/xenofem/transbeam cd transbeam cargo run --release ``` ## todo - uploader auth - downloader auth - more readable download codes? - proper error display in the web ui