# underBBS underBBS is a protocol-agnostic decentralized social media client and toolkit ## design `underbbs` can run in two modes depending on its executable name: ### web client `underbbs` supports multiple simultaneous account logins, mediating them for each user through a gateway server that handles all protocol-specific logic via `adapter`s and streaming content to the user through a single websocket connection with a singular data interface. adapters receive commands via a quartzgun web API and send data back on their shared websocket connection; when data comes in on the websocket, `underbbs` will save it and then notify any relevant web components that the data has changed. ### CLI `underbbs-cli` pulls adapter credentials from `~/.config/underbbs/cli.conf` and accepts commands on individual adapters, printing data to standard output. ## building and running requirements are - go 1.22 (for the backend) - any recent nodejs that can do `typescript` and `webpack` 5 (for the frontend) from the project root: 1. `./build.sh front` (if you will use the web components) 2. `./build.sh server` 3. `./underbbs` or `./underbbs-cli ADAPTER ACTION ARGS...` ## integrating ### with the API and web components 1. fill `Settings._instance` with adapter settings; these will mostly be authentication data (`SettingsElement` illustrates this) 2. instantiate whatever components you want on your page with their `data-adapter`, `data-gateway` and `data-target` appropriately set; further docs to come on these 3. call `DatagramSocket.connect(GATEWAY)` where `GATEWAY` is the domain of the `underbbs` API. `SettingsElement`'s connect button does this for you. ### with the CLI 1. Call the CLI directly from the serverside or locally 2. Process any output to your preference