From 3a91c1cb40f0d50f063df2b36f14cc122c9427b1 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Fri, 28 Feb 2025 15:26:40 -0500 Subject: [PATCH] bb --- BB.md | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 BB.md diff --git a/BB.md b/BB.md new file mode 100644 index 000000000..aaadc596b --- /dev/null +++ b/BB.md @@ -0,0 +1,98 @@ +NIP-BB +====== + +Bulletin Boards +--------------- + +`draft` `optional` + +A bulletin board is a relay-centric system of forums where users can post and reply to others, typically around a specific community. The relay operator controls and moderates who can post and view content. + +A board is defined by `kind:30890`. Its naddr representation must provide the community's home relays, from which all posts should be gathered. No other relays should be used. + +# Board Organization + +```jsonc +{ + "kind": 30890, + "tags": [ + ["d", ""], + ["name", ""], + ["summary", ""] + ["image", ""], + ["relay", "wss://"], // home relay + ["relay", "wss://"], // mirror relay + ["forum", "<30891:pubkey:dTag>", ""], // forum + ["forum", "<30891:pubkey:dTag>", ""], // forum + ["forum", "<30891:pubkey:dTag>", ""], // forum + ["forum", "<30891:pubkey:dTag>", ""] // forum + ], + "content": "", +} +``` + +Clients must download `kind:30890` and display the forum links in the specified order. + +Forums are defined by `kind:30891` and organize threads within specific topics. + +```jsonc +{ + "kind": 30891, + "tags": [ + ["d", ""], + ["name", ""], + ["summary", ""] + ["image", ""], + ], + "content": "", +} +``` + +# Treads and replies + +Threads are root posts, specified by `kind:892` in Markdown. They reference a forum using an `A` tag. +```jsonc +{ + "kind": 892, + "tags": [ + ["d", ""], + ["name", ""], + ["summary", ""] + ["image", ""], + + ["A", "<30891:pubkey:dTag>", ""] // the root topic + ], + "content": "", +} +``` + +Replies to each thread are defined by `kind:893` and reference the root thread with an `E` tag. + +Replies do not reference parent replies and MUST be rendered strictly in `created_at` order. + +Users MUST use `>` to quote sections of a previous post if they wish to reply to specific authors. + +```jsonc +{ + "kind": 893, + "tags": [ + ["A", "<30891:pubkey:dTag>"] // the root topic + ["E", ""], // Thread root + + ["p", "<32-bytes hex of a pubkey>", ""], + ], + "content": "", +} +``` + +`q` tags MAY be used when citing events in the `.content` with [NIP-21](21.md). + +```json +["q", " or ", "", ""] +``` + +`p` tags SHOULD be added for any user worth notifying, either from a direct mention in the post or because the user was an author of a post in that thread. + +# Moderation + +Content moderation is performed directly using relay management tools. \ No newline at end of file