Skip to content

Requirements and Specifications

GooJinSun edited this page Apr 16, 2022 · 1 revision

Team 8 - adoor (구진선, 김재원, 박지나, 유규리)


Project Abstract
Key Terms
Customer
Competitive Landscape
User Interface Requirements
User Stories

Document Revision History

2020-10-17 [v1.0] initial version

Project Abstract

adoor is a prompt-driven social media platform ideal for building intimacy.

Upon successful sign in, users will be able to view a group of ‘Recommended Questions’ which they can choose to answer. A user-based collaborative filtering (ML) model will be leveraged to recommend specific ‘Questions’ to each user as ‘Recommended Questions’.

Though responding to ‘Questions’ is the core part of our service, users are not restricted to posting responses to given questions. They may access questions other than the ‘Recommended Questions’ from the ‘Question Feed’ or write text-based articles of any lengths and purpose, including questions for which they can receive ‘Responses’ from friends (i.e. ‘Custom Questions’).

Users may also choose to customize the audience of their ‘Posts’ (i.e. ‘Custom Questions’, 'Responses', ‘Articles’); ‘Posts’ can be shared with either their friends or other users of adoor (i.e. ‘Anonymous Post’), or both. Also, reactions such as ‘Likes’, ‘Comments’ and ‘Replies’ can be set to be private between the author and the recipient. Furthermore, any user who wishes to find out their friend’s opinions on a given question can request a response for the question easily with a few clicks.

Overall, adoor welcomes users with a wide range of thought provoking and individualized Question prompts along with the flexibility and focus of the modes of share, opening a door to active intrapersonal and interpersonal communication.

(226 words)


Key Terms

EN KO Description
[Friend] Feed 친구 글 모음 Feed consisting of posts shared by self & friends
[Anonymous] Feed 익명 글 모음 Feed consisting of posts shared anonymously by self & users other than friends
[Question] Feed 질문 모음 Feed consisting of all daily recommended questions
[Question List] Widget 추천 질문 Widget on Main Page listing recommended questions for user
[Friends List] Widget 친구 Widget on Main Page listing friends of user
Daily Questions 오늘의 질문 Service-wide collection of all recommended questions
Recommended Questions 추천 질문 Questions chosen w/ ML model from Daily Questions for each user
Custom Question 내가 만든 질문 Question created by users (rather than the admin of adoor)
Post 모든 게시물 Any submissions to the feed (i.e. Articles, Responses, Custom Questions)
Response 답변 Posts written in response to Questions
Article 아무말 Posts written without Question prompts
Comment 댓글 Direct comments to posts
Reply 덧글 Replies to comments
Private Comment/Reply 비밀 댓글/덧글 Comment or reply set to be private between the author and the recipient.

Customer

  • Anyone that wants to learn more about themselves and their friends - whether it be about their values, habits, or favorite flavors of popcorn.
  • Anyone curious about other people’s opinions on a wide range of topics.
  • Anyone willing to reflect on or express their thoughts on different questions, from light to serious, short-answer to free-response.
  • Anyone who prefers text-based communication to an image-oriented one, the currently predominant form of communication on major social media platforms.

Competitive Landscape

Market Competitors

Two-way communication Easy and quick writing & sharing Organized writing & editing ML-driven Daily Questions Wide range of topics
Kakaotalk O O X X X
Finstagram X O X X X
Naver Blog X X O X O
Facebook O O O X O
Twitter X O X X O
adoor O O O O O
Easy & quick request to friends for responses on questions Write and share custom questions with other users Private reactions (i.e. comments, likes, ...) View and post to anonymous feed Ad-free
Kakaotalk X X X X
Finstagram X X X X X
Naver Blog X X O X X
Facebook O X X X X
Twitter O O O X
adoor O O O O O

Three Major Strengths of adoor

(1) Daily Recommendation of Thought-provoking Questions

Users of adoor are given a chance to broaden their horizons through an individually curated group of questions. These prompts will comprise a wide range of topics, from light conversation starters to more in depth and personal ones, and will serve as seeds of thoughts to the users on a daily basis.

(2) Focus on Communicating Thoughts

Unlike many other social media platforms run by Big Tech companies, adoor has a subscription revenue model, and is thus ad-free. Users will be able to concentrate solely on thinking and communicating without the distraction of irrelevant ads. Also, we make editing and publishing easy for contents of varying modes and lengths by leveraging useful features from other relevant services such as Facebook and Github.

(3) Sharing with and Learning from a Wider Audience

Users can share and view posts not only with their friends but also any with other users of adoor via the Anonymous Feed. Any curious minds will benefit hugely from interacting with different users on a range of topics they have never encountered elsewhere. They can even directly publish questions and seek opinions from a larger circle of community. (Any toxic questions will be cleaned up by a not-yet(?)-but-in-30-years-existing AI for adoor ☺)


User Interface Requirements

Google drive Link(all pages)
Google drive Link(wireframe) adoor-ver-0 0 1(final)


User Stories

No. Feature Sprint
1 Sign Up 3
2 Login 3
3 View Daily Questions 4
4 View Friends List 4
5 Write a Response 3
6 Comment 3
7 Reply 5
8 Like 3
9 Private Comment 5
10 Send Question to Friend 5
11 View and Accept Friend Request 4
12 Setting an audience to Post 4
13 View Friends’ Posts 4
14 Write an Article 3
15 Write a Custom Question 4

User Story 1

Feature: Sign Up

Actors: Those who want to use adoor service as a member

Precondition: User has not created his/her own account before. User is currently in the Login Page.

Trigger: User clicks on the [Sign Up] Button

Scenario

(1) Before signing up, as a non-member of *adoor*, User can only access the Login Page and Sign Up Page.

(2) User clicks on the [Login] Button in the Login Page and is redirected to the Login Page, but does not have his/her own account.

(3) Then User clicks on the [Sign Up] Button in the Login Page.

(4) User is redirected to the Sign Up Page, and enters his/her information for the required fields: email, username, and password

(5) User clicks on the [Sign Up] Button.

(6) User is redirected to the Question Selection Page, and asked to choose at least 5 likable questions from sample questions provided.

(7) After User clicks on the [Done] Button, with a new account created, User is redirected to the Main Page as logged in.

(8) After signing up, as a member of *adoor*, User can view all the features on the Main Page such as: [Question List] Widget, ‘[Friends List] Widget’, ‘[Question] Feed’, ‘[Anonymous] Feed’, and ‘[Friend] Feed’.

Exceptions:

User does not fill out all the required fields: email, username, and password.
User does not select at least 5 likable questions in the Question Selection Page.
User already has his/her own account.

Acceptance Test:

Given User has filled out all the required fields in the Sign Up Page and has selected at least 5 likable questions from sample questions provided.

When User clicks on the [Done] Button

Then User should be redirected to the Main Page as logged in, being able to view all the features on the Main Page.
Then the User's account will be added to the database.

User Story 2

Feature: Login

Actors: Members of adoor who want to use all the features provided by adoor

Precondition: User has already created an account before User is currently in the Main Page. Trigger: User clicks on the [Login] Button

Scenario

(1) User is redirected to the Login Page after clicking the [Login] Button.

(2) User enters his/her account information: email and password.

(3) User clicks the [Login] Button.

(4) If the account information is correct, the User is redirected to the Main Page or the page the User visited right before.

(5) User Icon, Notification Icon and [Logout] Button are shown at the application header.

Exceptions:

User does not fill out the required fields: email and password.
User entered an email that does not exist or entered an incorrect password.

Acceptance Test:

Given User has filled out all the required fields in the Login Page

When User clicks on the [Login] Button

Then User should be redirected to the Main Page or to the page the user visited right before.
Then User can view and use all the features provided by *adoor*.
Then User is able to see his/her User Icon and [Logout] Button at the application header.

User Story 3

Feature: View Daily Questions

Actors: Members of adoor who is logged in

Precondition: User is already logged in. User is currently in the Main Page. Trigger: User accesses the Main Page

Scenario

(1)  User accesses the Main Page.

(2)  User can view [Question List] Widget with randomly generated questions.

(3)  Questions in the [Question List] Widget will be updated daily.

(4)  User can also refresh the questions on the [Question List] Widget by clicking 
[Random Questions Generation] Button.

Acceptance Test:

Given User is logged in

When User accesses to the Main Page

Then User should be able to view the [Question List] Widget in the Main Page.

When User clicks [Random Questions Generation] Button on the [Question List] Widget

Then the questions on the [Question List] Widget will be randomly generated again.

When the [Question List] Widget is unfolded or folded and User clicks [Fold/Unfold] Icon

Then the [Question List] Widget will be folded or unfolded.

User Story 4

Feature: View Friends List

Actors: Members of adoor who is logged in

Precondition: User is already logged in. User is currently in the Main Page.

Trigger: User accesses to the Main Page and [Friends List] Widget appears.

Scenario

(1) [Friends List] Widget appears at the right side of the Main Page.

(2) The user can view all of his/her friends’ Profile Icons and usernames.

(3) By clicking on a Friend’s username or Friend’s Profile Icon, 
the User can visit the Friend Profile Page of the Friend.

Acceptance Test:

Given User is logged in

When User accesses to the Main Page

Then [Friends List] Widget should appear at the right side of the Main Page.
Then the User should be able to view all of his/her Friends’ 
Profile Icons and usernames at the [Friends List] Widget.

User Story 5

Feature: Write a Response

Actors: Members of adoor who is logged in

Precondition: User is already logged in User is currently in the Main Page. User is able to view the [Question List] Widget

Trigger: User selects a question one of the questions in the [Question List] Widget that he/she wants to answer.

Scenario

(1) User can view all of the questions in the [Question List] Widget.

(2) User finds the question he/she wants to answer.

(3) User selects the question he/she wants to answer.

(4) User is redirected to the Question Detail Page that shows 
the selected question with [Write] Button, [Send] Button, and the Responses of others.

(5) When the User clicks the [Write] Button, the Input Area appears below the question 
and the user can type his/her answer in the Input Area.

(6) After the User finishes to answer in the Input Area, User can click [Submit] Button and 
the User is redirected to the former Question Detail Page with his/her own Response added.

(7) User can always view the [Edit] Button and [Delete] Button for his/her own Response.

(8) When the User clicks the [Edit] Button, the user can edit his/her own Response.

(9) When the User clicks the [Delete] Button, the user can delete his/her own Response.

Exceptions: > User typed nothing in the Input Area.

Acceptance Test:

Given User is logged in

When User selects a question from the [Question List] Widget

Then the User is redirected to the Question Detail Page.

When User typed his/her answer in the Input Area in the Question Detail Page and clicks [Submit] Button

Then the User is redirected to the former Question Detail Page with his/her own Response added.
Then the Response for the question from the user will be added to the database.

When User clicks [Edit] Button at his/her own Response in the Question Detail Page

Then the User can edit his/her own Response

When User clicks [Delete] Button at his/her own Response in the Question Detail Page

Then the User can delete his/her own Response

User Story 6

Feature: Comment

Actors: Members of adoor who are attempting to comment to a Post in the [Friend] Feed

Precondition: User is already logged in User is viewing a Post from the [Friend] Feed in the Main Page or the Post Detail Page User is not attempting to write a Private Comment Trigger: User reads a Post in the [Friend] Feed

Scenario

(1)  User scrolls through the [Friend] Feed in the Main Page and decides to comment on a specific Post.

(2)  User feels confident about his/her Comment being shared with any of the Comment recipient’s Friends.

(3)  User writes a Comment in the Comment Input Area below the Post and 
submits the Comment by clicking the [Enter] Button.

(4)  When the User writes a Comment to a Post in the [Friend] feed, 
the Comment and his/her username will be visible to the User and any Friend of the Author of the Post.

Exceptions:

User does not input any content in the Comment Section
User clicks on the [Private] Toggle Button

Acceptance Test:

Given User has entered some content to the Comment Section

When User clicks on the [Enter] Button or presses the ‘Enter’ key

Then the Comment should be posted at the bottom of the list of Comments of the Post that belongs to the Post.
The recipient of the Comment (i.e. Author of the Post) will receive a Notification on the Comment.
Then the Authors of the Comment or the Parent Post can choose to delete the Comment but not edit it. 
Deleting the Comment will remove any Replies to the Comment.
Notification that the recipient of the Author had received will also be removed upon the deletion of the Comment.

User Story 7

Feature: Reply

Actors: Users attempting to reply to a Comment

Precondition: User is already logged in User is viewing a Post from the [Friend] Feed in the Main Page or the Post Detail Page

Trigger: User clicks on the [Reply] Button under a certain Comment

Scenario

(1) User scrolls through the [Friend] Feed and decides to reply to a specific Comment.

(2) User clicks on the [Reply] Button next to the Parent Comment and 
enters some contents to the Reply Input Area that is rendered at the bottom of the Reply thread.

(3) The User finishes posting the Reply by clicking on the [Enter] Button or pressing the ‘Enter’ Key.

(4) The audience of the Reply is limited to the audience of the Parent Comment. 
In other words, a Reply to an anonymous Comment can only be anonymous, 
and a Reply to a Private Comment can only be private.

(5) User can also choose to write a private Reply to a public Comment under a Friend’s Post 
by clicking on the [Private] Toggle Button.

Exceptions:

User does not input any content in the Reply Section.
User attempts to write a public Reply under a Private Comment.

Acceptance Test:

Given User has clicked on the [Reply] Button and entered some content to the Reply Section

When User clicks on the [Enter] Button or presses the ‘Enter’ Key

Then the Reply should be posted at the bottom of the thread of Replies of the Parent Comment 
and the Authors of the Post and Parent Comment should receive a Notification on the Reply.
Then the range of audience of the Reply will be bounded by the audience of the Parent Comment.
Then the Authors of the Reply or the Post can choose to delete the reply but not edit it.
Deleting a Reply is self contained; it will not take any effect on the Parent Comment or other Replies on the Reply thread.
Any relevant Notifications will be deleted upon the removal of the Reply.

User Story 8

Feature: Like

Actors: Users attempting to react to a Post/Comment/Reply

Precondition: User is already logged in User is viewing a Post from the [Friend] Feed or [Anonymous] Feed in the Main Page or a Post Detail page

Trigger: User reads a Post/Comment/Reply

Scenario

(1)  User scrolls through the [Friend] Feed or [Anonymous] Feed.

(2)  User reads a specific Post/Comment/Reply and decides to react to it.

(3)  User clicks on the [Like] button.

(4)  The number of Likes that the Post/Comment/Reply has received and 
the list of actors of the Likes will only be visible to the Author of the Post/Comment/Reply.

Exceptions:

User has already ‘Liked’ the Post/Comment/Reply beforehand.

Acceptance Test:

Given User is currently viewing a Post/Comment/Reply he/she wants to react with Like

When the User clicks the [Like] Button

Then the number of Likes that the Post/Comment/Reply has received will be increased
and will only be shown for the author of the post.
Then the actor of the Like can choose to undo the action by clicking on the [Like] button again. 
Notification that the recipient of the Author had received will also be removed upon undoing the action.

User Story 9

Feature: Private Comment

Actors: Users concerned about the audience of their Comments

Precondition: User is already logged in User is viewing a Post from the [Friend] Feed in the Main Page or a Post Detail page User is writing the Comment to their Friend’s Post, not an anonymized one

Trigger: User reads a Post in the [Friend] Feed that he/she wants to comment

Scenario

(1)  User scrolls through the [Friend] Feed and decides to write a Comment to a specific Post.

(2)  User enters some contents to the Comment Input Area.

(3)  The User feels that the Comment should rather be shared only with the Author of the Post.

(4)  User clicks on the [Private] Toggle Button and posts the Comment.

(5)  The Comment can only be viewed by the Author of the Post and the User him/herself. 
Other Users will not be able to recognize the presence of the Private Comment.

Exceptions:

User does not input any content in the Comment Section.

Acceptance Test:

Given the User has entered some content to the Comment Section and clicks on the [Private] Toggle Button

When the User clicks on the [Enter] Button or presses the ‘Enter’ Key

Then the Comment should be posted at the bottom of the list of Comments of the Post that belong to the Post. 
The recipient of the Comment (i.e. Author of the Post) will receive a Notification on the Private Comment.
Then the Private Comment will only be visible to the User and the recipient of the Comment.
Then the Authors of the Private Comment or the Post can choose to delete the Private Comment but not edit it. 
Deleting the Private Comment will remove any Replies to itself. 
Notification that the recipient of the Author had received will also be removed upon the deletion of the Private Comment.

User Story 10

Feature: Send Question to Friend

Actors: Users that are curious about their Friends’ Responses to a certain Question.

Precondition: User is already logged in User cannot remember that the Friend had written a Response on the Question User is viewing a Question from the [Question] Feed or a Modal (that is rendered upon clicking on the Notification on ‘Daily Question’ update) on ‘Daily Questions’ or the [Question List] Widget

Trigger: User clicks on the [Request Response] Button

Scenario

(1) User reads a Question and wishes to request a Response from his/her Friend.

(2) User clicks on the [Request Response] Button and a list of the User’s Friends with a [Request] Button
next to each of the Profile Icon and username pops up as a Modal.

(3) The User sends a request to the Friend by clicking on the [Request] Button next to the Friend’s Profile Icon.

(4) The Friend receives a Notification on the request and the User receives a Notification when the Friend responds to the Question.

Acceptance Test:

Given User has clicked on the [Request Response] Button to a specific Question

When User clicks on a [Request] Button from the list of the User’s Friends

Then the Friend should receive a request to respond to the Question in the form of a Notification.

When the Friend clicks on the Notification on the request

Then the friend will be prompted to write a Response on the Question. 
If the Friend chooses to write the Response, the User will receive a Notification on the Response. 
The User may not undo the request. However, the Friend may choose to delete the Response on the Question,
in which case the Notification on the Response will also be removed.

User Story 11

Feature: View and Accept Friend Request

Actors: Members of adoor

Precondition: User is already logged in. User has received a Friend Request(s)

Trigger: User clicks on the Notification Icon

Scenario

(1) If there is new Notification, Notification Badge with the number of new Notifications
is visible at the right upper side of Notification Icon.

(2)  Notification Panel will be opened after clicking on the Notification Icon.

(3) User can see Friend Request(s) with the sender’s basic information: username and Profile Icon

(4) When the User clicks on the Friend Request, he/she will be redirected to the Notification Page. 
Friend Request tab is selected by default.

(5) The User can visit the sender's Profile Page by clicking on the Profile Icon of the sender.

(6) The User can accept or ignore the Friend Request or delete the Notification.

(7) If the User accepts the Friend Request, the sender is added to the User's Friend List.

(8) The Notification will be marked as read.

Exceptions:

The Friend Request sender’s account is deleted.

Acceptance Test:

Given User has new Friend Request(s)

When User clicks on the Notification Icon

Then the user should be able to see a new Friend Request(s).

When clicking on the sender’s Profile Icon

Then the User should be redirected to the Notification Page with Friend Request tab selected by default.

When the User accepts the Friend Request,

Then the Friend Request sender will be added to the User’s Friend List.

User Story 12

Feature: Setting an audience to Post

Actors: Those who want to share their Posts with a specific audience of adoor.

Precondition: User is already logged in User is writing a Post(which includes Response or an Article)

Scenario

(1) User writes a Post.

(2) User decides to share the Post with a specific audience - (1) with all Users of *adoor* anonymously,
(2) with the User’s Friends, or (3) both of the aforementioned.

(3) After the User writes something in the Input Area, he/she can set an audience to the Post he/she is currently writing.

(4) A Post is shared with the audience group (3) by default with both the [Share with Friends] Toggle Button
and [Share Anonymously] Toggle Button ON. In other words, all Users including non-Friends can view the Post upon submission.

(5) The User and his/her Friends will be able to view the Post in the [Friend] Feed of the Main Page.

(6) Other Users (i.e. non-Friends) will be able to view the post from the [Anonymous] Feed of the Main Page.

(7) The User will also be able to access it from the My Profile Page.

(8) The Post is shared in both [Friend] Feed and [Anonymous] feeds by default; 
anyone who wishes to modify the audience group should be able to do so by clicking on the Toggle Buttons:
[Share Anonymously] or [Share with Friends].

Exceptions:

User leaves the Input Area empty.

Acceptance Test:

Given User has written something in a [Write Post] or [Write Response] Input Area.

When User clicks [Submit] Button by not modifying the Toggle Buttons

Then the Post should be shared with the Author and his/her Author’s Friends on the [Friend] feed and all other Users of *adoor* on the [Anonymous] Feed anonymously.

When User clicks on the [Share Anonymously] or [Share with Friends] Toggle Buttons.

Then the Post should not be shared with Users other than the Author and his/her Friends or the Author’s Friends, respectively.

User Story 13

Feature: View Friends’ Posts

Actors: Members of adoor who is logged in

Precondition: User is already logged in. User has one or more Friends.

Trigger: User accesses to the Main Page and [Friend] Feed is selected by default.

Scenario

(1) User can browse his/her Friends’ Posts and his/her own Posts and the Posts are ordered in the latest order.

(2) In the [Friend] Feed, User can view all of the Posts of him/herself and his/her Friends: Responses, Articles and also Comments.

(3) Comments of a specific Post will be shown right below the Post.

(4) User can Like or undo the Like to the Friends’ Posts by clicking the Like Icon.

(5) User can write Comments to the Post or Replies to the Comment.

Exceptions:

The Author of the Post deletes the Post after the User has gotten the contents of the Post, while the User was making reactions (Like or undo the Like) or writing Comments

Acceptance Test:

Given User is logged in

When User accesses to the Main Page or selects [Friend] Feed

Then fetching Friends’ Post API should be called
Then the User should be able to see Posts of him/herself and his/her Friends’ Posts, 
and all the Posts should be ordered in the latest order by uploaded datetime.
Then the User should be able to view contents of the Post: Responses, Articles and Comments
Then the User should be able to make reactions: Like or undo the Like

User Story 14

Feature: Write an Article

Actors: Members of adoor who is logged in

Precondition: User is already logged in. User is currently in the Main Page with [Friend] Feed or [Anonymous] Feed selected

Scenario

(1) User is in the Main Page with [Friend] Feed or [Anonymous] Feed selected

(2) User wants to write an Article (without Question) about something

(3) Regardless of which Feed the User is in (between the [Friend] Feed and [Anonymous] Feed),
there is an Input Area that the User can write something in.

(4) When the User finishes writing an Article and setting an audience for the content,
he/she can click [Submit] Button to submit the Article.

(5) After submitting the Article, the Article is added in the Feed(s).

(6) Then the User should be able to view all the Posts of the Feed the User is currently in 
including the Article the User submitted right before.

Exceptions:

User typed nothing in the Input Area.

Acceptance Test:

Given User is logged in and wants to write an Article

When User is currently in the [Friend] Feed and submitted it by clicking [Submit] Button

Then the User should be able to view his/her own Article in the Feed that the User set before clicking [Submit] Button.

User Story 15

Feature: Write an Custom Question

Actors: Members of adoor who is logged in

Precondition: User is already logged in. User is currently in the Main Page

Scenario

(1) User is in the Main Page

(2) User wants to write his/her own Custom Question and get curious about what other users would answer

(3) User types his/her Custom Question content in the Custom Question Input Area.

(4) When the User finishes writing a Custom Question and the User can set an audience for the Custom Question
by toggling on the [Share Anonymously] and [Share with Friends] Toggle Button.

(5) Then the User can click [Submit] Button to submit the Custom Question.

(6) After submitting the Custom Question, it will be added to the Feed(s) as the Author of the Custom Question
according to the audience the User set before the submission

(7) The Custom Question the User made will be also added to the list of Questions in the [Question] Feed by default

(8) Then the User should be able to view all the Posts (including Articles and Questions) of the Feed(s) 
including the Custom Question the User submitted right before.

Exceptions:

User typed nothing in the Custom Question Input Area.

Acceptance Test:

Given User is logged in and wants to write a Custom Question in the Main Page

When User typed content of the Custom Question and clicked [Submit] Button

Then the User should be able to view his/her own Custom Question in the Feed(s) 
according to the audience the User set before clicking [Submit] Button.