58 lines
1.8 KiB
Markdown
58 lines
1.8 KiB
Markdown
<p align="center">
|
|
<img alt="transbeam logo: a laser warning sign in trans flag colors" height="128" src="https://git.xeno.science/xenofem/transbeam/raw/branch/main/static/transbeam.svg">
|
|
</p>
|
|
<h3 align="center">transbeam</h3>
|
|
<p align="center">A low-latency file drop web app</p>
|
|
|
|
## 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:
|
|
- `STORAGE_DIR`: path where uploaded files should be stored (default: `./storage`)
|
|
- `STATIC_DIR`: path where the web app's static files live (default: `./static`)
|
|
- `PORT`: port to listen on localhost for http requests (default: 8080)
|
|
- `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 `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
|
|
- delete uploads after a while
|
|
- configurable maximum file size
|