43 lines
1.8 KiB
Markdown
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
|