Decentralized bulletin boards on atproto.
Project description
@boards
Bulletin boards on the atmosphere.
Run a BBS from your own account. No server required. Users own their posts, communities migrate freely. Built on atproto.
Features
- Web app and TUI: Browse, post, and manage BBSes from your browser or terminal.
- Built on atproto: All data lives in user repos as
xyz.atboardsrecords. No central database. - No server needed to run a BBS: A sysop just publishes records to their own PDS.
- OAuth login: Sign in with your Bluesky handle or any atproto account.
- Discover BBSes: The home screen shows BBSes from across the network.
- Flat replies: Threads with chronological replies, plain text.
- Sysop tools: Create and edit your BBS, manage boards, post news.
- Self-hostable: One Docker command to run the web app.
Quick start
TUI (recommended)
Requires Python 3.14+ and uv.
uv tool install atboards
atb
Or from source:
git clone https://github.com/alyraffauf/atboards.git
cd atboards
uv sync
uv run atb
Web app (Docker)
docker run -d -p 8000:8000 -v atboards-data:/data -e PUBLIC_URL=https://your-domain.com ghcr.io/alyraffauf/atboards:latest
Or with Docker Compose:
git clone https://github.com/alyraffauf/atboards.git
cd atboards
docker compose up -d
Visit http://localhost:8000.
Web app (from source)
git clone https://github.com/alyraffauf/atboards.git
cd atboards
uv sync
just dev
Architecture
atboards has no backend database for content. All BBS data lives in atproto repos:
- Sysop records:
xyz.atboards.site,xyz.atboards.board,xyz.atboards.news - User records:
xyz.atboards.thread,xyz.atboards.reply
The web app and TUI query existing network infrastructure:
- Slingshot — cached record and identity fetching
- Constellation — backlink index for discovering threads and replies
- UFOs — BBS discovery feed
Configuration
On first run, atboards generates:
secrets.json— app secret key and OAuth client signing keyatboards.db— SQLite database for OAuth sessions
Web app: Set ATBOARDS_DATA_DIR to control where these are stored (default: current directory, /data in Docker). Set PUBLIC_URL to your domain for OAuth callbacks.
TUI: Data is stored in ~/.local/share/atboards/ (Linux), ~/Library/Application Support/atboards/ (macOS), or %APPDATA%/atboards/ (Windows).
License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file atboards-0.3.0.tar.gz.
File metadata
- Download URL: atboards-0.3.0.tar.gz
- Upload date:
- Size: 90.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f76c01971a3acef57d533fe2dc7e1fa369f0e53f24c18265f8335e83cee657da
|
|
| MD5 |
e3b5b368289c024479d75d639126f7f5
|
|
| BLAKE2b-256 |
072b31f4a55717403adbfaa11d2994e0f385d8de9538dc0d1427cd317987855e
|
File details
Details for the file atboards-0.3.0-py3-none-any.whl.
File metadata
- Download URL: atboards-0.3.0-py3-none-any.whl
- Upload date:
- Size: 73.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3b7efa9e687e4374e8c1680540a0b85a23ca5d8381ef2e2b41cabde66b7d76ee
|
|
| MD5 |
eefb0d8bdf007a4bc2039c43ef7c9f82
|
|
| BLAKE2b-256 |
c386335a1ba63d24a64b5a7e7996ea37e7acca6c8ae154be1c4f32f3b184bb51
|