Low-latency file drop web app
Find a file
2022-05-01 02:32:56 -04:00
resources organize images better 2022-04-30 01:46:21 -04:00
src just unwrap on datetime formatting, it should never be an issue and there's no point having an error ready to pass back to the client 2022-05-01 02:22:03 -04:00
static massive cleanup/refactor of the web UI 2022-05-01 02:32:56 -04:00
.gitignore ignore flamegraph perf data 2022-04-28 01:50:55 -04:00
API.md added file expiration and fleshed out the API a bit 2022-04-30 01:38:26 -04:00
Cargo.lock Normalize filenames to Unicode Normal Form D before sanitisation 2022-04-30 15:14:28 -04:00
Cargo.toml Normalize filenames to Unicode Normal Form D before sanitisation 2022-04-30 15:14:28 -04:00
flake.lock nix flakes 2022-04-28 00:48:47 -04:00
flake.nix namespace all our variables 2022-04-30 01:53:21 -04:00
LICENSE MIT license 2022-04-28 00:49:21 -04:00
README.md update readme todo's 2022-04-30 02:17:37 -04:00

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'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