# Plebsaber.stream

BeatLeader‑powered tools for Beat Saber.

## BeatLeader OAuth setup

Set these environment variables (e.g. in your process manager or `.env` when using adapter‑node):

```
BL_CLIENT_ID=your_client_id
BL_CLIENT_SECRET=your_client_secret
```

Then start the dev server and visit `/auth/beatleader/login` to authenticate. Tokens are stored in httpOnly cookies and attached to all server‑side BeatLeader API calls.

## Developing

Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:

```sh
npm run dev

# or start the server and open the app in a new browser tab
npm run dev -- --open
```

## Nix Deployment

I use Caddy for TLS.

```
plebsaber.stream {
  reverse_proxy http://127.0.0.1:8037
}
```

I use sops-nix to deploy the flake with OAuth secrets.

```js
sops = {
  defaultSopsFile = ./sops.yaml;
  secrets = {
    "plebsaber-stream.env" = {
    sopsFile = ../_sops/plebsaber-stream.env;
    format = "dotenv";
    restartUnits = [ "plebsaber-stream.service" ];
    };
  }
};
services.plebsaber-stream = {
  enable = true;
  environmentFile = config.sops.secrets."plebsaber-stream.env".path;
};
```

Then add the flake from this repository into your flake inputs.

```js
inputs.plebsaber-stream = {
  url = "git+https://git.plebsaber.stream/pleb/plebsaber.stream.git";
  inputs.nixpkgs.follows = "nixpkgs";
};
```

For updates, push commits to a repository and then update your flake.

```sh
nix flake lock --update-input plebsaber-stream
nixos-rebuild test .#webserver
```
