{"id":"48bf2f162b2ec83d38959ec98224c619a48f0bc420a8739d8e22ac2d7911ef5c","pubkey":"460c25e682fda7832b52d1f22d3d22b3176d972f60dcdc3212ed8c92ef85065c","created_at":1748639817,"kind":30817,"tags":[["d","bulletin-boards"],["title","Bulletin Boards"],["k","30890"],["k","30891"],["k","892"],["k","893"],["client","nostrnips.com"]],"content":"NIP-BB\n======\n\nBulletin Boards\n---------------\n\n`draft` `optional`\n\nA 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.\n\nA 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.\n\n# Board Organization\n\n```jsonc\n{\n  \"kind\": 30890,\n  \"tags\": [\n    [\"d\", \"<unique_board_identifier>\"],\n    [\"name\", \"<board_name>\"],\n    [\"summary\", \"<short summary for preview>\"]\n    [\"image\", \"<optional_image_url>\"],\n    [\"relay\", \"wss://\"], // home relay\n    [\"relay\", \"wss://\"], // mirror relay\n    [\"forum\", \"<30891:pubkey:dTag>\", \"<category>\"], // forum\n    [\"forum\", \"<30891:pubkey:dTag>\", \"<category>\"], // forum\n    [\"forum\", \"<30891:pubkey:dTag>\", \"<category>\"], // forum\n    [\"forum\", \"<30891:pubkey:dTag>\", \"<category>\"] // forum\n  ],\n  \"content\": \"<board_description and rules>\",\n}\n```\n\nClients must download `kind:30890` and display the forum links in the specified order.\n\nForums are defined by `kind:30891` and organize threads within specific topics.\n\n```jsonc\n{\n  \"kind\": 30891,\n  \"tags\": [\n    [\"d\", \"<unique_forum_identifier>\"],\n    [\"name\", \"<forum_name>\"],\n    [\"summary\", \"<short summary for preview>\"]\n    [\"image\", \"<optional_image_url>\"],\n  ],\n  \"content\": \"\",\n}\n```\n\n# Treads and replies\n\nThreads are root posts, specified by `kind:892` in Markdown. They reference a forum using an `A` tag.\n```jsonc\n{\n  \"kind\": 892,\n  \"tags\": [\n    [\"d\", \"<unique_forum_identifier>\"],\n    [\"name\", \"<forum_name>\"],\n    [\"summary\", \"<short summary for preview>\"]\n    [\"image\", \"<optional_image_url>\"],\n\n    [\"A\", \"<30891:pubkey:dTag>\", \"<board's home relay>\"] // the root topic\n  ],\n  \"content\": \"<post_content>\",\n}\n```\n\nReplies to each thread are defined by `kind:893` and reference the root thread with an `E` tag. \n\nReplies do not reference parent replies and MUST be rendered strictly in `created_at` order. \n\nUsers MUST use `>` to quote sections of a previous post if they wish to reply to specific authors.\n\n```jsonc\n{\n  \"kind\": 893,\n  \"tags\": [\n    [\"A\", \"<30891:pubkey:dTag>\"] // the root topic\n    [\"E\", \"<event_id of kind 892>\"], // Thread root\n\n    [\"p\", \"<32-bytes hex of a pubkey>\", \"<mentioned users' outbox relay>\"],\n  ],\n  \"content\": \"<reply_content>\",\n}\n```\n\n`q` tags MAY be used when citing events in the `.content` with [NIP-21](21.md).\n\n```json\n[\"q\", \"<event-id> or <event-address>\", \"<relay-url>\", \"<pubkey-if-a-regular-event>\"]\n```\n\n`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.\n\n# Moderation\n\nContent moderation is performed directly using relay management tools.","sig":"be20fc628576222cf9849b8c6ece8d06fa8120c1dec399849b8944d9cc9e8ca67b06523cca8a91c20a4795243c1ad085c0a985173de4a091a29e31dd203bf07d"}