Use cases
...
Tom has a set of data he wants to public and have people take a look at. However, no one is interested to know his data because no one know who Tom is. Tom would love for people to find his impressive work, but does not want to copy it from his linkedin profile to his post. He would love for his work to be shown in every posts somehow so that it gives more credits to what he says.
Approach
Image RemovedImage Added
Each project has a Forum. A Forum has one or many ModeratorModerators, and many Threads. A Thread is created by a user (Author) and has many Replies. A Replies Reply is created by a user (Author).
In the second phase, we could add new features so that a user could help the community by marking a Thread is helpful, and by marking a Reply is helpful or unhelpful.
...
Mockups
Phase 1
Summary View
Paginated Threads
Image Added
Thread View
Paginated Replies
Image Added
Author View
...
Image Removed
Moderator View
Phase 2
Summary View
Image Removed
Thread View
Image Removed
Removed (Hidden) Replies
Image Added
New Thread
Image Added
New Reply
Image Added
Models
Image RemovedImage Added
API
ActionAction | Intended User | URI | Method | Request Parameters | Request Body | Response Body | Notification Sent to ( |
Phase 2P2) |
1 | Get Forum Metadata for a Project | authorized user | /forum/{projectId} | GET |
| | Forum | | Update Forum Description | Moderator | /forum/{forumId}/description | PUT | | String | | Forum |
|
2 | Get Threads of a Forum | authorized user | /forum/{forumId}/threads | GET | order, limit, offset |
|
3 | Create a Thread | authorized user | /thread | POST |
|
|
4 | Get a Thread by its ID | authorized user | /thread/{threadId} | GET |
|
|
5 | Create a Reply | authorized user | /reply | POST |
|
| CreateReply | Reply | Thread’s Author |
6 | Get a Reply by its ID | authorized user | /reply/{replyId} | GET |
| Flag authorized userModerator | /thread/{threadId} |
/flagPUTFlag | | | Moderator | authorized userModerator | /reply/{replyId} |
/flagPUT | | | Moderator | Pin
|
|
|
|
9 | Get Replies for a Thread |
Moderatorauthorized user | /thread/{threadId}/ |
pinUnpin a Thread | ModeratorPUT | | | | | GET | order, limit, offset |
| PaginatedReplies |
|
10 | Update a Thread’s Message | Author | /thread/{threadId}/ |
unpin Remove a Flag on a Thread | Moderator | /thread/{threadId}/unflag | PUT | | | | |
Remove a Flag on a Reply | Moderator | /reply/{replyId}/unflag | PUT | | | | |
Remove a Reply | Moderator | /reply/{replyId} | DELETE | | | | |
Remove a Thread | Moderator | / | | | 11 | Update a Reply’s Message | Author | /reply/{replyId}/message | PUT |
| String |
|
|
12 | Update a Thread's title | Author | /thread/{threadId}/title | PUT |
| String |
|
|
13 | Restore a deleted thread | Moderator | /thread/{threadId}/restore |
DELETE | | | | Get Replies for a Thread
|
|
|
|
14 | Retrieve a paginated list of moderator for a given forum | authorized user | / |
threadthreadIdrepliesorder, PaginatedReplies Future Potential Extensions
...
- Provide an Order By button so that users can view Q&A answers either by the votes or by chronological order.
- Users should be able to vote on all topics given the above feature.
- Users should be able to choose certain topics to follow. Have three panels with paginated content:
- Topics pinned by Admin
- Topics I follow
- Others (order chronologically)
- Allow private discussions (like how it works with entity).
- Use notation @username, and notify users when their names are mentioned.
- In File/Table tab view, if a file or a table has a discussion, give users the link to go to the discussion about that file/table.
- As soon as the the feature is out, people will want to search for the content of the comment.
- Use case: allowing users to vote on a row in a table.
Suggestion: provide a way for user to upload a table, then auto-generate a topic about that table, each row in the table is a vote-able comment. - How many layers of nesting comments is good?
- The advantage of having only one layer of comments/ response is that everything in a topic must be relevant to the topic.
- The advantage of having two layer of comments is that user can comment on a specific comment.
- Answers by admin should be highlighted and appears first.
- Tags should appear separated from the body of the comment in the New Topic window.
- Users who have Read permission should be able to vote.
...
Search
Notification
Vote (up and down) on responses
Flag a thread/ response as inappropriate
Mark a thread as helpful
Be able to see that there are discussions on a file / table* - DONE
Be able to link to a thread - DONE
- Moderator would be able to close a thread and link to another thread