--- tags: Product --- # Discourse Boost - Member can launch a free discourse boost that creates a new forum category for the dao. - If boost is active there will be a checkbox on new proposal forms to create a forum post for the proposal when submitted. - or assign an existing post - api end point get all posts - Discourse forum data is displayed in a proposal detail page #### Forum https://forum.daohaus.club/ ### UI - Discourse boost/app launcher - Requires member signature - Hits boost update endpoint with data for new category ```json= { contractAddress: <dao.address>, boostKey: 'discourse', metadata: { categorySlug: <somethingStandard??> }, network: network.network, signature, } ``` - New proposal form update to expose 'add forum post' checkbox if the dao has the boost - Or maybe this should be on proposal detail so anyone can add it later and we don't have to deal with waiting on the tx? - Makes api post to create a form post, body: - title, description, link, ect.. - all the graph data for the proposal - forum category from the boostMetadata - Make this a member only api call - How will we know to display the link to the forum on the proposal detail? - Where else should we display forum link - settings? - add an option/prompt in new proposal scree could be 'add forum' post for discussion before you submit on chain - Display forum post data in the proposal detail - if possible, link to forum at minimum ### API - Create category job that will be triggered in the updateBoost endpoint: - https://github.com/odyssy-automaton/daohaus-api/blob/forum/functions/create-category.js - updateBoost endpoint change to call new lambda job when launching boost with 'discourse' boostKey. - Add category key in boostMetadata record: ```json= { "discourseCategory": <categorySlug> } ``` - new endpoint to create the forum post: - https://github.com/odyssy-automaton/daohaus-api/blob/forum/functions/create-proposal-topic.js # Proposal Types ```json= { contractAddress: <dao.address>, boostKey: 'proposalType', metadata: { lootGrab: { active: true, lootRatio: 5 }, <typeKey>: { active: true }, }, network: network.network, signature, } metadata.lootGrab?.active ``` ``` [ {"type":"discord", "channelId":"805237027841769545", "active":true, "actions":[ "votingPeriod", "rageQuit", "newProposal" ]} ] ```