underbbs/README.md

43 lines
1.8 KiB
Markdown

# 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