Merge 3a91c1cb40f0d50f063df2b36f14cc122c9427b1 into 0619f370bca3485bb9c5870bc2defa03c7c3d10e

This commit is contained in:
Vitor Pamplona 2025-03-17 19:10:44 +01:00 committed by GitHub
commit 3dcc3dde66
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

98
BB.md Normal file
View File

@ -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", "<unique_board_identifier>"],
["name", "<board_name>"],
["summary", "<short summary for preview>"]
["image", "<optional_image_url>"],
["relay", "wss://"], // home relay
["relay", "wss://"], // mirror relay
["forum", "<30891:pubkey:dTag>", "<category>"], // forum
["forum", "<30891:pubkey:dTag>", "<category>"], // forum
["forum", "<30891:pubkey:dTag>", "<category>"], // forum
["forum", "<30891:pubkey:dTag>", "<category>"] // forum
],
"content": "<board_description and rules>",
}
```
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", "<unique_forum_identifier>"],
["name", "<forum_name>"],
["summary", "<short summary for preview>"]
["image", "<optional_image_url>"],
],
"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", "<unique_forum_identifier>"],
["name", "<forum_name>"],
["summary", "<short summary for preview>"]
["image", "<optional_image_url>"],
["A", "<30891:pubkey:dTag>", "<board's home relay>"] // the root topic
],
"content": "<post_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", "<event_id of kind 892>"], // Thread root
["p", "<32-bytes hex of a pubkey>", "<mentioned users' outbox relay>"],
],
"content": "<reply_content>",
}
```
`q` tags MAY be used when citing events in the `.content` with [NIP-21](21.md).
```json
["q", "<event-id> or <event-address>", "<relay-url>", "<pubkey-if-a-regular-event>"]
```
`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.