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

...

Removed (Hidden) Replies

Image Added

New Thread

Image Added

New Reply

Image Added

Models

API

 

 ActionIntended UserURIMethodRequest ParametersRequest BodyResponse BodyNotification Sent to (Phase 2)
Get Forum Metadata for a Projectauthorized user/forum/{projectId}GET  Forum 
Update Forum DescriptionModerator/forum/{forumId}/descriptionPUT String  
Get Threads of a Forumauthorized user/forum/{forumId}/threadsGETorder, limit, offset PaginatedThreads 
Create a Threadauthorized user/threadPOST CreateThreadThread 
Get a Thread by its IDauthorized user/thread/{threadId}GET  Thread 
Create a Replyauthorized user/replyPOST CreateReplyReplyThread’s Author 
Get a Reply by its IDauthorized user/reply/{replyId}GET  Reply 
Flag a Threadauthorized user/thread/{threadId}/flagPUT   Moderator
Flag a Replyauthorized user/reply/{replyId}/flagPUT   Moderator
Pin a ThreadModerator/thread/{threadId}/pinPUT    
Unpin a ThreadModerator/thread/{threadId}/unpinPUT    
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 ThreadModerator/thread/{threadId}DELETE    
Get Replies for a Threadauthorized user/thread/{threadId}/repliesGETorder, limit, offset PaginatedReplies 
Update a Thread's MessageAuthor/thread/{threadId}/messagePUT String  
Get Threads that mentions an Entityauthorized user/thread/entity/{entityId}GETorder, limit, offset PaginatedTheads 
Mention an Entityauthorized user/thread/{id}/mentionEntityPOST EntityIdMentionEntity 
Mention Entitiesauthorized user/thread/{id}/mentionEntitiesPOST List<EntityId>List<MentionEntity> 

...