adapter | ||
cli | ||
config | ||
frontend | ||
models | ||
server | ||
.gitignore | ||
build.sh | ||
go.mod | ||
go.sum | ||
package-lock.json | ||
package.json | ||
README.md | ||
tsconfig.json | ||
underbbs.go | ||
webpack.config.js |
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
andwebpack
5 (for the frontend)
from the project root:
./build.sh front
(if you will use the web components)./build.sh server
./underbbs
or./underbbs-cli ADAPTER ACTION ARGS...
integrating
with the API and web components
- fill
Settings._instance
with adapter settings; these will mostly be authentication data (SettingsElement
illustrates this) - instantiate whatever components you want on your page with their
data-adapter
,data-gateway
anddata-target
appropriately set; further docs to come on these - call
DatagramSocket.connect(GATEWAY)
whereGATEWAY
is the domain of theunderbbs
API.SettingsElement
's connect button does this for you.
with the CLI
- Call the CLI directly from the serverside or locally
- Process any output to your preference