Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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 Moderators, 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

Moderator View

Phase 2

Summary View

Image Removed

Thread View

Image Removed

Files View

Image Removed

Query Result View

Image Removed

Models

Image Removed

API

 

...

Removed (Hidden) Replies

Image Added

New Thread

Image Added

New Reply

Image Added

Models

Image Added

API



ActionIntended UserURIMethodRequest ParametersRequest BodyResponse BodyNotification Sent to (
Phase 2
P2)
1Get Forum Metadata for a Projectauthorized user/forum/{projectId}GET
  


Forum
 Update Forum DescriptionModerator/forum/{forumId}/descriptionPUT String  

2Get Threads of a Forumauthorized user/forum/{forumId}/threadsGETorder, limit, offset
 

PaginatedThreads
 

3Create a Threadauthorized user/threadPOST
 

CreateThreadThread
 

4Get a Thread by its IDauthorized user/thread/{threadId}GET
  


Thread
 

5Create a Replyauthorized user/replyPOST
 

CreateReplyReplyThread’s Author 
6Get a Reply by its IDauthorized user/reply/{replyId}GET
 
 


Reply
 

7
Flag
Remove a Thread
authorized user
Moderator/thread/{threadId}
/flag
PUTFlag
DELETE
   Moderator




8Remove a Reply
authorized user
Moderator/reply/{replyId}
/flag
PUT
DELETE
   ModeratorPin




9Get Replies for a Thread
Moderator
authorized user/thread/{threadId}/
pinUnpin a ThreadModerator
replies
PUT    
GETorder, limit, offset
PaginatedReplies
10Update a Thread’s MessageAuthor/thread/{threadId}/
unpin
messagePUT
 Remove a Flag on a ThreadModerator/thread/{threadId}/unflagPUT   

 

Remove a Flag on a ReplyModerator/reply/{replyId}/unflagPUT    Remove a ReplyModerator/reply/{replyId}DELETE    Remove a Thread

String
   


11Update a Reply’s MessageAuthor/reply/{replyId}/messagePUT
String

12Update a Thread's titleAuthor/thread/{threadId}/titlePUT
String

13Restore a deleted threadModerator/thread/{threadId}/restore
DELETE
PUT
    Get Replies for a Thread




14Retrieve a paginated list of moderator for a given forumauthorized user/
thread
forum/{
threadId
forumId}/
replies
moderatorsGET
order,
limit, offset
 

PaginatedModerators
PaginatedReplies

Future Potential Extensions

 

...

 

...

  • Search

    • Look for all discussions about an entity - DONE

    • Search for content

    • Tag / Category

  • Notification

    • Moderator gets notification when new thread is created - DONE

    • Author gets notification when someone responds to their post - DONE

    • Following - DONE

  • 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