You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Say what tsbb is: a platform with front doors, not only a forum (#19)
The front page, the About page, the docs index and llms.txt each described
the board in their own words, and between them they undersold it: an API, a
CLI, an MCP server, an installable app, a terminal client, runtime plugins
and self-updating installs were either buried in the README or nowhere.
The claims now live in apps/server/src/platform.ts and every surface renders
the same list. Each entry carries a status: `live` means it is in this
repository today, `planned` renders as a badge with no link. Peer to peer is
the only planned one, and it is marked as such on the front page, on About,
in the docs index and in llms.txt, because a roadmap item written as a
feature is the one lie a marketing page tells by accident.
New documentation for the front doors that had none: docs/AGENTS.md (what
the board publishes for machines, and why agent-ok and human-ok are the same
board), docs/PWA.md, docs/UPDATES.md and docs/SKINS.md. They are served at
/docs like every other guide and go into llms-full.txt and the sitemap.
test/platform.test.ts holds the copy to the code: every live claim must link
at something answering 200, a planned one must have no link and must render
as planned everywhere, llms.txt must say the same thing as the page, and the
grid must carry no inline style attribute.
Also here, because they were in the way:
- `board.showPlatform` (Appearance, on by default) hides the panel for a
board whose readers are not looking to run one. Members never see it.
- llms.txt link labels come from each document's own <h1> rather than the
first clause of its blurb, which for a blurb with no colon printed the
whole sentence as the link text.
- The docs page footer line used a style="…" attribute, which the board's
own CSP refuses, so it had been rendering unspaced. It is a class now.
Claude-Session: https://claude.ai/code/session_01QuUkTrofSjQ15j79mRuy4f
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
|**Plugins**| A directory in `plugins/`. No build, no registry. [Docs](docs/PLUGINS.md)|
26
+
|**Updates**| A board installs new releases itself. [Docs](docs/UPDATES.md)|
27
+
28
+
**Not yet: peer to peer.** Boards connecting to other boards, and syncing topics
29
+
between nodes, is the direction and is not in the code. Everything else on this
30
+
page is.
12
31
13
32
```
14
33
pnpm install
@@ -37,6 +56,9 @@ Open <http://localhost:3000>, put in your email address, and click the link.
37
56
|**An API**| A permission-checked REST API with an OpenAPI description at `/api/v1/openapi.json`. |
38
57
|**A CLI**|`tsbb` reads and posts against any board from a shell, with `--json` on every command. |
39
58
|**An MCP server**| Served at `/api/mcp`, and as `tsbb-mcp` over stdio, so an assistant can use the board as a member. |
59
+
|**An app**| An installable PWA: a generated manifest, a service worker that is network-first for pages, and an offline page wearing the board's own chrome. |
60
+
|**A machine-readable board**|`llms.txt`, `llms-full.txt`, `skill.md`, a sitemap index, `security.txt`, JSON-LD on every page, OPML for the feeds. |
61
+
|**Self-updating**| A board checks for a new release a minute after boot and every five minutes, installs it and restarts itself. |
40
62
41
63
## Design decisions worth knowing before you read the code
42
64
@@ -87,6 +109,8 @@ else.
87
109
|`classic`| A 2000s bulletin board: boxy, dense, gradient title bars, Verdana. |
@@ -243,6 +244,8 @@ export function adminRoutes(services: Services) {
243
244
'board.logoHref':
244
245
'Where the header logo points. / is this board. An absolute URL is for a board that is one room in a larger site — the nav still leads back to the front page, so nobody is stranded.',
245
246
'board.faviconUrl': 'A URL to a browser-tab icon. Replaces the bundled tsbb icons.',
247
+
'board.showPlatform':
248
+
'A panel at the foot of the front page telling a visitor what the software under this board can do: the API, the CLI, MCP, the app, plugins. Guests only, never members. Turn it off for a board whose readers are not looking for one of their own.',
246
249
'signatures.minPosts':
247
250
'How many posts before a signature is shown. A new account with a link-filled signature is the shape of every piece of forum spam, so this is 10 by default.',
248
251
'posts.floodSeconds': 'Seconds between posts by the same account. 0 turns flood control off.',
0 commit comments