Destinee FinalProjectReport
Destinee FinalProjectReport
FPT UNIVERSITY
Capstone Project Document
Group GFA22SE34
Acknowledgements 14
I. Project Introduction 16
1. Overview 16
1.1 Project Information 16
1.2 Project Team 16
1.2.1 Supervisor 16
1.2.2 Team Members 16
2. Product Background 16
3. Existing Systems 17
3.1 App 1: Tinder 17
3.2 App 2: Omegle 17
4. Business Opportunity 17
5. Software Product Vision 18
6. Project Scope & Limitations 18
6.1 Major Features 18
6.2 Limitations & Exclusions 20
1
5. Configuration Management 28
5.1 Document Management 28
5.2 Source Code Management 29
5.3 Tools & Infrastructures 29
2
3.3.4.1 View Home Page 50
3.3.4.2 View Profile Information 52
3.3.4.3 Update Profile Information 53
3.3.4.4 Update Call Profile Display Options 56
3.3.4.5 Upload Avatar 58
3.3.4.6 Get Post List 60
3.3.4.7 Upload New Post 61
3.3.5 Call 63
3.3.5.1 Find Call 63
3.3.5.2 Reveal Anonymous Caller 66
3.3.5.3 Start Call 68
3.3.5.4 View Another Profile In Call 69
3.3.5.5 Join Call Constructive Questions Process 71
3.3.5.6 Answer Call Constructive Questions 72
3.3.5.7 View Constructive Question Result 74
3.3.5.8 End Call 75
3.3.5.9 Rate Call 76
3.3.5.10 View Call Criteria Filter 78
3.3.5.11 Setup Call Criteria Filter 79
3.3.6 Manage Notification 81
3.3.6.1 View All Notifications 81
3.3.7 Manage Call History 83
3.3.7.1 View Call History List 83
3.3.7.2 View Call History Detail 84
3.3.8 Manage Conversation 86
3.3.8.1 View Conversations List 86
3.3.8.2 View All Messages In The Conversation 88
3.3.8.3 Send Message 90
3.3.9 Manage MBTI Tests 92
3.3.9.1 View The MBTI Tests List 92
3.3.9.2 View Detailed MBTI Test 94
3.3.9.3 Do MBTI Test 96
3
3.3.10 Manage Friend Request 99
3.3.10.1 View Friend Request List 99
3.3.10.2 View Friend Request Detail 100
3.3.10.3 Send Friend Request 102
3.3.10.4 Deny Friend Request 103
3.3.10.5 Accept Friend Request 105
3.3.11 Manage Friend 106
3.3.11.1 View Friend List 106
3.3.11.2 View Friend Profile 108
3.3.11.3 Unfriend 110
3.4 Admin System 112
3.4.1 Authenticate 112
3.4.1.1 Log In 112
3.4.1.2 Log Out 113
3.4.2 Manage Account 114
3.4.2.1 Get Account List 114
3.4.2.2 Get Account Detail 115
3.4.2.3 Create Admin Account 116
3.4.2.4 Reset Password 118
3.4.2.5 Update Account Status 120
3.4.3 Manage Profile 122
3.4.3.1 Get Profile List 122
3.4.3.2 Get Profile Detail 123
3.4.4 Manage Constructive Questions And Answers 125
3.4.4.1 Get Constructive Question List 125
3.4.4.2 Get Constructive Question Detail 127
3.4.4.3 Update Constructive Answers 128
3.4.4.4 Create Constructive Answer 129
3.4.4.5 Delete Constructive Answer 131
3.4.4.6 Create Constructive Question 132
3.4.4.7 Change Constructive Question Status 134
3.4.5 Manage Call History 135
4
3.4.5.1 Get Call History List 135
3.4.5.2 Get Call History Detail 137
3.4.6 Manage Order History 139
3.4.6.1 Get Order History List 139
3.4.6.2 Get Order History Detail 140
3.4.7 Manage Payment History 141
3.4.7.1 Get Payment History List 141
3.4.7.2 Get Payment History Detail 143
3.4.8 Manage MBTI test 144
3.4.8.1 Get MBTI Test List 144
3.4.8.2 Get MBTI Test Detail 146
3.4.9 Statistics 147
3.4.9.1 View Statistics Data 147
4. Non-Functional Requirements 150
4.1 External Interfaces 150
4.1.1 User interface 150
4.1.2 Communication interface 150
4.2 Quality Attributes 150
4.2.1 Usability 150
4.2.2 Flexibility 150
4.2.3 Security 150
5
2. Database Design 157
2.1 Collections Relationship 158
2.2 Data Dictionary 159
2.2.1 Collection accounts 159
2.2.2 Collection registrators 159
2.2.3 Collection callQuestions 160
2.2.4. Collection statistics 161
2.2.5 Collection notifications 161
2.2.6 Collection callHistories 162
2.2.7 Collection friendRequests 163
2.2.8 Collection mbtiTests 164
2.2.9 Collection images 164
2.2.10 Collection posts 165
2.2.11 Collection conversations 165
2.2.12 Collection messages 165
2.2.13 Collection profiles 165
2.2.14 Collection orders 168
2.2.15 Collection payments 169
3. Detailed Design 169
3.1 User find call 170
3.1.1 Activity Diagram 170
3.1.2 Class Diagram 170
3.1.2.1 CallGateway Class 171
3.1.2.2 CallGatewayGuard Class 172
3.1.2.3 CallQueueService Class 172
3.1.2.4 SocketCallFilterREQ Class 172
3.1.2.5 CallService Class 173
3.1.2.6 CallStateService Class 173
3.1.2.7 CallQueueInfo Interface 174
3.1.2.8 SocketActiveCall Interface 174
3.1.2.9 SocketActiveCaller Interface 175
3.1.2.10 ProfileService Class 175
6
3.1.11 CallHistoryService Class 175
3.1.12 AccountService Class 176
3.1.2.13 PACKAGE 177
3.1.2.14 CallHistoryCreateREQ Class 177
3.1.2.15 CallHistoryProfileREQ Class 177
3.1.2.16 CallQuestionService Class 178
3.1.2.17 CallHistoryRepository Class 178
3.1.3 Sequence Diagram 178
3.1.4 State Machine Diagram 180
3.2 User send message 181
3.2.1 Activity Diagram 181
3.2.2 Class Diagram 181
3.2.2.1 MessageController Class 182
3.2.2.2 MessageService Class 182
3.2.2.3 MessageRepository Class 183
3.2.2.4 Message Class 183
3.2.2.5 MessageSendREQ Class 183
3.2.2.6 ConversationRepository Class 184
3.2.2.7 Conversation Class 184
3.2.2.8 ProfileRepository Class 184
3.2.2.9 Profile Class 184
3.2.2.10 NotificationService Class 185
3.2.2.11 NOTIFICATION_TYPE 185
3.2.2.12 AccountRepository Class 186
3.2.2.13 Account Class 186
3.2.2.14 AccountParsedDTO Interface 186
3.2.2.15 AccountUpgrade Class 186
3.2.2.16 ROLE 187
3.1.13. PACKAGE 187
3.2.2.17 FirebaseAuthGuard Class 187
3.2.2.18 AccountParsedDTO Class 187
3.2.2.19 FirebaseAuthStrategy Class 187
7
3.2.3 Sequence Diagram 187
3.3 User order and pay premium package 189
3.3.1 Activity Diagram 189
3.3.2 Class Diagram 190
3.3.2.1 FirebaseAuthGuard Class 191
3.3.2.2 OrderController Class 191
3.3.2.3 OrderService Class 191
3.3.2.4 OrderRepository Class 192
3.3.2.5 Order Class 192
3.3.2.6 ORDER_STATUS 192
3.3.2.7 PaymentService Class 192
3.3.2.8 PaymentRepository Class 193
3.3.2.9 Payment Class 193
3.3.2.10 PAYMENT_STATUS 194
3.3.2.11 PaymentController Class 194
3.3.2.12 VnPayPayDTO Class 194
3.3.2.13 VnpayReturnREQ Class 194
3.3.2.14 AccountService Class 195
3.3.2.15 AccountRepository Class 195
3.3.2.16 AccountUpgrade Class 195
3.3.2.17 PACKAGE 196
3.3.2.18 Account Class 196
3.3.2.19 ROLE 196
3.3.3 Sequence Diagram 196
3.3.4 State Machine Diagram 199
This state machine diagram describes order state 199
This state machine diagram describes payment state 200
4. Algorithm 200
4.1 Find best potentian match for participant in queue 200
4.1.1 Summary 200
4.1.2 Define problem 200
4.1.3 Solution 200
8
4.1.4 Performance 203
4.1 Calculate MBTI 206
4.1.1 Summary 206
4.1.2 Define problem 207
4.1.3 Solution 207
9
3. User Manual 221
3.1 Admin System 222
3.1.1 View Statistics Data 222
3.1.2 Create Constructive Question 223
3.2 User System 224
3.2.1 Call 224
3.2.2 Chat 233
10
List of Figures
11
List of Tables
12
Table 30: Data Dictionary - Collection mbtiTests.
Table 31: Data Dictionary - Collection images.
Table 32: Data Dictionary - Collection posts.
Table 33: Data Dictionary - Collection conversations.
Table 34: Data Dictionary - Collection messages.
Table 35: Data Dictionary - Collection profiles.
Table 36: Data Dictionary - Collection orders.
Table 37: Data Dictionary - Collection payments.
Table 38: Matching criteria.
Table 39: Test Plan - Test Stages.
Table 40: Test Plan - Human Resources.
Table 41: Test Plan - Test Milestones.
Table 42: Test Plan - Test Cases and Test Reports.
Table 43: Source codes & documents.
Table 44: System Requirements - Hardware Requirements.
Table 45: System Requirements - Software Requirements.
Table 46: System Requirements - Software Requirements.
13
Acknowledgements
To our family, you guys are the motivation, the reason for us to strive every day. We wouldn't be
where we are today without your sacrifices, thank you for nurturing, teaching, caring, and investing
in us. I want to dedicate this achievement to you guys, I hope you know that these past years, your
sacrifices were not wasted. We love you
We would like to thank Ms. Hoang Xuan Hong for her active support during the past five months.
Despite of busy with work at FSoft, you still schedule and are always energetic to meet and exchange
with us.
We would like to thank Mr. Lam Huu Khanh Phuong, Ms. Nguyen Thi Cam Huong, Mr. Tran Thanh
Nguyen, Mr. Do Tan Nhan, Mr. Nguyen Trong Tai, and Ms. Ho Yen Thuc for their comments to make
the project more complete.
We would like to thank Ms. Than Thi Ngoc Van, Ms. Vo Thi Thanh Van, Mr. Nguyen The Hoang, Mr.
Nguyen Le Nhat Truong, and all the other teachers at FPT University for helping us from zero in the
past four years, now we have enough knowledge and qualifications to complete our work. This
product is not only our efforts but also all the teachers' efforts. We are beyond grateful.
From the leader of Destinee, personally, I would like to thank Do Tuan Kiet, Le Duc Minh Thien, and
Le Tan Tai for trusting me, and trusting my idea since I have nothing to prove. Thanks for trying and
fighting together. Our Destinee team is a great team, you guys have worked very hard over the past
few months to build a product that we can be proud of. I'm so grateful to have you guys
14
Definition and Acronyms
Acronym Definition
BR Business Rule
UC Use Case
Users can review the dât of the calls they have made in the
Call History
past
Users can choose the criteria of who they will be paired with in
Call Criteria
the system
Table 1: Definition and Acronyms .
15
I. Project Introduction
1. Overview
1.1 Project Information
● Project name: Destinee - Connecting & building quality conversation application.
2. Product Background
We are busier and busier with work, and with many things in life. Making new friends, exchanging,
and meeting offline is a luxury for many individuals. But the need to share, chat and confide has
never diminished over time.
This is proven by lifestyle apps that are getting more and more downloads and reaching more people.
The peak was during the recent covid outbreak when the stock price of Match Group Inc, the parent
company of many of the most popular lifestyle apps, doubled.
Through the process of personal experience and survey of customers who have been using the above
lifestyle applications. We've noticed some of the problems that users are facing:
1. Waiting for a message response consumes a lot of time for busy people who do not have the
habit of using mobile devices a lot
16
2. Users find it difficult to convey stories seamlessly by texting
3. Users do not choose to call because most people are afraid to call and see strangers
4. Users don't know what to say, it's difficult to continue building the story
Recognizing the above problems, we decided to develop Destinee, an application that allows
one-to-one random pairing to voice chat anonymously, text, make friends, view photos & profile
pages of each other. With Destinee, users can quickly find a mate in a split second and continue to
keep in touch with that person if they have had a great conversation.
3. Existing Systems
3.1 App 1: Tinder
A platform that helps people to connect with location-based.
● Pros:
a. Very popular and large user-base lead to a variety of choices
b. Great UI/UX, easy to use
c. User recommendation algorithm by location works efficiently
● Cons:
○ User main goal is to get to know each other, not to have a deep talk, confide
○ The main way to communicate is texting
3.2 App 2: Omegle
Website: Omegle: Talk to strangers!
A platform allows users to randomly video chat one on one with strangers
● Pros:
a. Has existed for a long time, has a large user base from worldwide
b. Meeting new people just in second
c. Very easy to use, register/login not required
d. Support multiple platforms such as web, and mobile app
● Cons:
○ Skip ratio is quite high, people tend to not be patient
○ User main goal is to get to know each other, not to have a deep talk, confide
○ Show face is required to continue the call
4. Business Opportunity
The lifestyle app market in Vietnam has grown bigger since the covid19 crisis. According to Apple
Store, and Google Play Store, Fika, a brand new Vietnamese dating app has been founded in 2020,
and now after only 2 years has gained over 500 thousand downloads, Tinder is also growing pretty
well in Vietnam as well
17
With a covid pandemic, users are now familiar and even more open with making new friends,
chatting, and creating a relationship through an online platform. So, the appearance of Destinee will
fit in the niche market where people would like to have a deep conversation or voice call instead of
texting
Our dream target is to build not only an application but a service that can support our customer from
online to offline, starting with the MVP, and we continue to update and change the application, and
business model according to customers’ need
1. At the end of December, release the MVP version to consult and get feedback from users
then change if there are redundancies, shortcomings, and business model according to
customer needs.
2. After getting good user reviews, and a few customers willing to pay a fee which means it
proved the successful model. We will have a plan to ramp up marketing and increase the
number of users
18
As a member, I want to manage my MBTI tests,
FE-06
do a new test, view result
19
6.2 Limitations & Exclusions
Limitations are what our application can’t do or is not supported at this time
Limitation Description
Voice call sound quality is not supported very well in different network
LI-05
environments, slow connection can lead to lag, miss of sounds
PWA does not work smoothly on devices with old, outdated operating
LI-07
systems and browsers
Table 5: Limitations.
Exclusion is a feature that we have thought about before but due to time, the budget limit we cannot
implement those features at this time
Exclusion Description
EX-03 Protect user by abuse report, report review, confirm and account ban
Table 6: Exclusion.
20
II. Project Management Plan
1. Overview
1.1 Scope & Estimation
Est. Effort
# WBS Item Complexity
(man-days)
1 Market analysis 15
2 Training 85
3 Workspace setup 7
4 Write document 54
21
Write final project report Medium 4
5 Interface design 43
6 Implementation 123
Login Medium 3
Logout Simple 1
Register Medium 5
Forget password 1
22
Upload avatar/post Medium 2
Unfriend Simple 1
23
Manage orders Simple 2
7 Testing 10
8 Closing 6
Report Medium 6
24
4 e-wallets (Momo, Medium Medium Use Vnpay as the last option
ZaloPay) do not support
non-business account
2. Management Approach
2.1 Project Process
Source: https://kanbanize.com
Destinee project is developed using the Kanban Method model – an Agile framework for product
development. We decided to use this model because of following reasons:
● Our project is built according to the startup model, requirements, user stories will be unclear,
requirements are often changed and new features are added after user feedback.
● We use Kanban Method for this project because it is quite flexible in assigning tasks,
reviewing and updating when the task is complete.
● Because we are limited in time and require to offload all unnecessary activities. Using the
kanban method reduces the number of meetings compared to scrum. Product backlogs, and
25
review process are completed by leader, using kanban will significantly reduce the amount of
time spent setting up complex process tools like setup Jira, sprint management, …
Product Backlog
Since our team member is four member, therefore our WIP Limit will be 4 tasks at a time. The below
image is the screenshot of our product backlog
● API convention:
○ Response status code: 200, 204, 400, 401, 403, 404, …
○ Response with pagination follow this format include: results, page, limit, count,
totalPage, totalCount
● Coding convention:
○ Set the meaningful names for variables
○ Use Pascal casing for naming Enum, Class and Interface
○ Reformat using defined Eslint convention for every new code
● CI/CD:
○ Use GitHub Action to continue deploying, testing on hosting site
■ Dev Environment: destinee.dev
■ Prod Environment: destinee.vn
● Source code:
○ Create new branch/pull request for every new feature/fix/enhance
○ Branches: master, development, and development-test (for on-site test)
○ New branch is merged to development after reviewed by leader or assigned member
26
Figure 3: Github Action.
Waiver
Training Area Participants When, Duration
Criteria
ReactJS All Member Week 1 – 14 days Mandatory
Ionic React
WebRTC All Member Week 2 – 1 days Mandatory
WebSocket All Member Week 2 – 1 days Mandatory
Firebase All Member Week 2 – 1 days Mandatory
Authentication
FCM All Member Week 2 – 1 days Mandatory
Personality Test Nguyen Trung Thinh Week 2 – 3 days
Research
NestJS Nguyen Trung Thinh Week 2 – 5 days Mandatory
Table 10: Training Plan.
3. Responsibility Assignments
3.1 Team & Structures
27
Table 11: Team & Structures .
Role Responsibility
4. Project Communications
Communicat When, Type, Tool,
Who/Target Purpose
ion Item Frequency Method(s)
Work in Team ● Report daily progress 1 per day Google Meet,
team members ● Bug, enhancement, feature onl/offline
announce, and discuss meeting
Work with Supervisor ● Progress report to supervisor 1 per week Google Meet,
advisor (Ms.Hong) & ● Report and handle problem onl/offine
team ● Demo product, document meeting
members
Small Talk Team ● Quick talk, announce, review Always Messenger,
members Discord
Table 13: Project Communications.
5. Configuration Management
5.1 Document Management
● Use Notion to take notes, requirements, reviews
○ Reports
○ About Project, Vision
28
● Use Google Docs for documenting/managing docs: Link
29
BR-05 All photos uploaded to the server will be saved in 7 different formats:
● Original
● Resized
● Square
● Blur
● Blur Resized
● Blur Square
● Blur Pixelate
BR-06 Only “Member” role can upgrade account to the Premium Member by buying the
Premium package.
BR-07 User System only allow user from 17 years old to get account
BR-08 User can set to hide or display what kind of personal data they want
BR-09 There is some function that only Premium Member has:
● Send message
● Send friend request
● View friend list
● View friend’s profile
● View call history
BR-10 If 2 user is not a friend yet, the avatar that they can see of each other will be blurred
BR-11 Notification has 3 types: Message notification, Friend request notification, Friend Accept
Notification
BR-12 Each account on Destinee User System can only find the call in 1 device or tab of browser
at the same time
BR-13 Account that has “Vô hiệu hóa” status will be displayed by “Vô hiệu hóa” information in
User System:
● Avatar: default avatar based on account’s gender.
● Tên: “Người dùng không tồn tại”.
BR-14 In case the account is logging into Destinee User System but changed status from “Kích
hoạt” to “Vô hiệu hóa”, that account will be automatically logged out when sending any
request to the system.
BR-15 Users can only upload images as the post of profile in the User System.
BR-16 List friends of premium members only display friends who have “Kích hoạt” status.
BR-17 Admin cannot update the status of their own account to disable.
BR-18 Each time the password is changed, all devices will be requested to log in again with the
new password.
BR-19 User must use email as the username for registration of new account
BR-20 Admin account doesn’t have profile information.
BR-21 Admin can only create another admin account.
Table 15: Business Rules.
30
2. User Requirements
2.1 System Actors
# Actor Description
1 Guest Users who don’t have an account in the Destinee system.
Users who have an account in the Destinee system but have not
2 Member
upgraded to Premium Member yet.
Users who have an account in the Destinee system and already
3 Premium Member
bought the premium package.
4 Admin Administrator of the system.
5 System Handler Destinee System.
6 VNPay 3rd party payment gateway
Table 16: System Actors.
31
Figure 4: Use Case Diagram - User System.
32
2.2.2 Admin System
33
3. Functional Requirements
3.1 System Functional Overview
3.1.1 Screen Flow
34
3.1.2 Screen Details
View Profile My Information Member can view all information of the profile
5
Information Setting belonging to that Member.
Update Call
Member can update his/her profile information
7 Profile Display Call Profile Setting
visibility when calling.
Options
35
View Another Member can view the profile detail of another
14 Calling Screen
Profile In Call user in the call.
Join Call
Member start answering constructive
15 Constructive Call Question
questions.
Questions Process
18 End Call Calling Screen Member can end the current call.
View All Member can view all notifications that are sent
22 Notifications
Notifications automatically by the system.
View Call History Premium Member can view all calls in the
23 Call Histories
List history.
View
25 Conversations Premium Member can view all conversations.
Conversations List
View All
Premium Member can view all messages of the
26 Messages In The Direct Message
selected conversation
Conversation
Premium Member can send messages to
another user in the conversation after both 2
27 Send Message Direct Message
users end the call so that they can keep in touch
with each other.
View The MBTI Member can view all MBTI tests that have been
28 MBTI Test Histories
Tests List done and stored in the system.
View MBTI Test Member can view details of the selected MBTI
29 MBTI Test Result
Detail test.
36
Member can do the new MBTI test or continue
30 Do MBTI Test MBTI Test Process doing the MBTI test that has not been finished
yet.
View Friend
31 Friend Requests Member can view all friend requests.
Request List
Deny Friend
34 Friend Requests Member can deny a friend request.
Request
Accept Friend
35 Friend Requests Member can accept a friend request.
Request
Create Admin
5 Account Create Admin can create a new admin account.
Account
Admin can update the password of the
6 Reset Password Password Reset
selected account.
37
Admin can deactivate an account, preventing
Update Account Account Status the user from logging into User System or
7
Status Update Admin System or reactive selected account so
that account can log again into the system.
8 Get Profile List Profiles List of profiles in the system.
Admin can get details of the selected profile
9 Get Profile Detail Profile Detail
information.
Get Call History
10 Call Histories List of call history in the system.
List
Get Call History
11 Call History Detail Admin can get call history details.
Detail
Get Constructive Constructive Admin can see the title, answer, date created,
12
Question List Questions and question’s status.
Get Question Constructive Question
13 Admin can get call question information.
Detail Detail
Constructive Question
14 Create Question Admin can create a new question.
Create
Admin can deactivate an account, preventing
questions from being used in the User System
Change Question Constructive Question
15 or reactivate the selected constructive question
Status Status Update
so that that question can be used again in the
User System.
Constructive Question Admin can create new answers to the selected
16 Create Answer
Detail constructive question.
38
Guest Login Screen X X X
Screens Forget Password X X X
Flow Registration X X X
Home X X
My Profile X X
Profile Page Setting X X
My Information Setting X X
Call Profile Setting X X
MBTI Test History X X
MBTI Test Process X X
MBTI Test Result X X
39
Call History Detail X
Constructive Questions X
Constructive Question
X
Detail
Constructive Question
X
Status Update
MBTI Tests X
MBTI Test Detail X
Payments X
Payment Detail X
Orders X
Order Detail X
Table 19: Screen Authorization.
Entities List
# Entity Description
Store all information about the profile that the user has
1 Profile
created
Store all information about the image that the user has
2 Image
uploaded
40
Store all information about the post that the user has
3 Post
created
4 Conversation Store all information about the conversation of the user
5 Message Store all information about the message of the user
Stores all information about friend requests received by
6 FriendRequest
the user
Store all information about the constructive answer that
7 CallHistory
the user has made
Store all information about the constructive questions
8 ConstructiveQuestion
that the user has made
Store all information about the constructive answers that
9 ConstructiveAnswer
the user has made
Stores all information about notification received by the
10 Notification
user
Store all information about the account that the user has
11 Account
made
Store all information about the statistics that the user has
12 Statistics
made
Store all information about the MBTI Test that the user
13 MBTITest
has made
Store all information about the order that the user has
14 Order
bought
15 Payment Define the payment method of the user
Store all information about the registration that the user
16 Registrator
has made
Table 20: Entities List.
3.3.1.1 Sign Up
● Function trigger: Guest sends requests to create an account with a Member role in the
system by filling all required fields and clicking the “Đăng ký” button.
● Function description: This feature allows the Guest to create a new account in the User
System.
● Screen layout:
41
42
43
● Function details:
● Pre-condition:
○ Guest hasn’t had an account in the Destinee User System yet.
● Flow:
○ Guest inputs all required fields and clicks on the “Đăng ký” and the “Tiếp
tục” buttons.
○ System verifies and creates the new account based on the information that is
provided by the Guest
○ System automatically redirects the user to the home page as the Member
role.
● Data inputs:
○ Email: email format, required.
○ Mật khẩu: must have at least 8 characters, at least 1 letter and 1 number,
required.
○ Xác nhận mật khẩu: must be the same as “Mật khẩu field”, required.
○ Tên: free text, required, length 1 - 50 characters.
○ Nickname: free text, required, length 1 - 50 characters.
○ Nơi ở: select one value of the regions of VietNam, required.
○ Giới tính: select one value between Nam and Nữ, required.
○ Xu hướng tính dục: select value based on the value of the Giới tính field,
required.
○ Ngày sinh: select the date value in the calendar, required.
● System validates the new account’s information:
○ Success: System creates a new account based on the information provided,
displays the success message and redirects Member to the profile page.
○ Fail: System shows an error message based on the actor’s actions.
● Business Rules:
○ Email must be unique in the system.
○ The account that is created currently has the Member role and “Kích hoạt”
status.
3.3.2 Authenticate
3.3.2.1 Log In
● Function trigger: Member requests login into the system by filling in the email and password
and tapping on the “Đăng nhập” button.
44
● Function description: This feature allows the Member to login into the User System as the
Member and Premium Member role, giving them access to features for each role in the
Destinee System.
● Screen layout:
● Function details:
● Pre-condition:
○ Member already have an account in the User System.
○ Member logs into the system by account with “Kích hoạt” status
● Flow:
○ Member fill in the email and password and click on the “Đăng nhập” button
to send the request to login into the system.
○ System after the validation step will automatically redirect the user to the
home page
● Data inputs:
○ Email: email format, required.
45
○ Password: must have at least 8 characters, at least 1 letter and 1 number,
required.
● System checks email and password through the Firebase service:
○ System displays the successful message and redirects the user to the home
page.
○ Fail: System prevents the user from accessing and shows an error message
based on the actor’s actions.
● Business rules:
○ Only accounts that have “Kích hoạt” status and have a role are “Member”
and ”Premium Member” could be logged into the Destinee User System.
● Function details:
● Pre-condition:
○ Member already have an account in the User System.
● Flow:
46
○ Member fill in the email and clicks on the “Yêu cầu đổi mật khẩu” button to
send the reset password request to member email.
○ System after the validation step will automatically send email to member.
○ Member check email and click the reset password link to reset password.
○ Member fill in the new password and click on the “Lưu” button.
○ System after the validation step will automatically redirect the user to the
login page.
● Data inputs:
○ Email: email format, required.
● System checks email through the Firebase service:
○ System displays the successful message and sends email to the user.
○ Fail: System shows an error message based on the actor’s actions.
● Business rules:
○ Only accounts that have a role are “Member” and ”Premium Member” could
reset password from the User System.
3.3.2.3 Log Out
● Function trigger: Member wants to logout the User System by clicking the “Đăng xuất”
button
● Function description: This feature allows the Member to logout the User System.
● Screen layout:
47
● Function details:
● Pre-condition:
○ Member logged into the system.
● Flow:
○ Member clicks on the “Đăng xuất” tab.
○ System redirects to the “Home” page and displays the “Login” modal.
● System logged the Member out of the system.
○ Success: system logs the Member out of the system.
○ Fail: system shows the error based on the Member’s action.
● Business rules: N/A.
48
● Function details:
● Pre-condition:
○ Member already have an account in the User System.
○ Member hasn’t bought Premium package yet.
● Flow:
○ Member clicks on the “Gói thành viên 45,000đ/tháng” button to buy
Premium package.
○ System will automatically redirect the user to the VNPay page.
○ Member confirm and finish the purchase process in VNPay page.
○ System redirect Member to the “Payment Status” page with success status
and update role of user into “Premium Member”.
● System verify and update user role form “Member” to “Premium Member”:
○ Success: system redirect to the “Payment Status” page with success status
and update role of user into “Premium Member”.
○ Fail: system redirect to the “Payment Status” page with fail status.
● Alternative Flow:
49
Member cancel the The system will redirect Member to the “Payment
purchase process or the Status” page with failed status
purchase information is
denied by the VNPay
● Business rules:
○ Only accounts that have a “Member” role could buy Premium package.
○ The time of the Premium package will last 1 month, counting from the time
the Member makes a successful payment.
○ Premium package price is 45,000VND
50
● Function details:
● Pre-condition:
○ Member logged into the system.
● Flow:
○ Member requests to view the “Home” page.
○ System displays the “Home” page
● Member can view information of the member's profile:
○ Tên: text
○ Biệt danh: text
○ Tuổi: text
○ Chiều cao: text
○ Quê quán: text
○ Giới tính: text
○ Xu hướng tình dục: text
○ Công việc/Trường: text
○ Chuyên ngành: text
51
○ Ngôn ngữ: text
○ 3 bài nhạc yêu thích: image, text
○ 3 bộ phim yêu thích: image, text
○ Tùy chỉnh cuộc gọi: button
○ Bắt đầu gọi ngay: button
● System gets information related to the “Home” page:
○ Success: system displays information related to the “Home” page.
○ Fail: system shows an error message based on the member’s actions.
● Business rules: N/A
● Function details:
52
● Pre-condition:
○ Member logged into the system.
● Flow:
○ Member clicks on the “Cập nhật hồ sơ cá nhân” button.
○ System displays information about her/his profile.
● Member can view detailed information of the member's profile:
○ Tên: text
○ Biệt danh: text
○ Tên tài khoản: text
○ Quê quán: text
○ Ngày sinh: text
○ Giới tính: text
○ Bạn là: text
○ Bạn đang là: text
○ Trường/ công ty: text
○ Chuyên ngành: text
○ Chiều cao: text
○ Ngôn ngữ: text
○ 3 bài nhạc yêu thích: text
○ 3 bộ phim yêu thích: text
○ 3 sở thích: text
● System gets profile’s information:
○ Success: system displays profile’s information on the screen.
○ Fail: system shows an error message based on the Member’s actions.
● Business rules:
○ All information of the Member that is required to fill in the signup step will
be displayed in the required information area.
53
54
● Function details:
● Pre-condition:
○ Member logged into the system.
○ Member is currently on the “My Information Setting” page.
● Flow:
○ Member chooses the field that wants to update and inputs a new value.
○ System stores new values and displays that information on the profile setting
page after validating that information.
● Data inputs:
○ Tên: free text, length 1 - 50 characters, required.
○ Biệt danh: free text, length 1 - 50 characters, required.
○ Tên tài khoản: free text, length 1 - 50 characters, required.
○ Quê quán: select one of the regions of VietNam, required.
○ Ngày sinh: select the date value in the calendar, required.
○ Giới tính: select one value between Nam and Nữ, required.
○ Bạn là: select value based on the value of the Giới tính field, required.
○ Bạn đang là: select one of the defined values.
55
○ Trường/ công ty: free text, length 1 - 50 characters.
○ Chuyên ngành: free text, length 1 - 50 characters.
○ Chiều cao: choose the value in the dropdown.
○ Ngôn ngữ: choose one or many values in the dropdown.
○ 3 bài nhạc yêu thích: choose 3 values in options.
○ 3 bộ phim yêu thích: choose 3 values in options.
● System validates and updates profile’s information:
○ Success: system changes information, shows success messages and updates
the new value.
○ Fail: system shows an error message based on the member’s actions.
● Alternative Flow:
Actor sends a request to The system cancels the update profile process and
cancel the updated profile returns to the “Cập nhật hồ sơ” screen.
information.
● Business rules:
○ The maximum year in birthdate field is current year minor to 17.
○ “Quê quán” field is supported for all regions in VietNam only.
○ “Giới tính” field only has 2 options: Nam and Nữ.
○ “Ngôn ngữ” field has 5 options: Tiếng Anh, Tiếng Pháp, Tiếng Đức, Tiếng
Nhật, Tiếng Việt. Users also can choose one or many options.
○ “Bạn đang là” field has 4 options: Trống, Sinh viên, Nội trợ, Nhân viên.
○ Users can find their favourite songs and favourite movies by name or artist.
56
● Function details:
● Pre-condition:
○ Member logged into the system.
○ Member is currently on the ”Call Profile Setting” page.
● Flow:
○ Member choose the field that they want to show/hide.
○ System updates the information that is displayed in the call following the
custom setting of the Member.
● Member can view toggle fields:
○ Tên/Biệt danh: select one of the defined values.
○ Tuổi: toggle
○ Chiều cao: toggle
○ Quê quán: toggle
○ Giới tính: toggle
○ Xu hướng tình dục: toggle
○ Công việc/ Trường: toggle
○ Chuyên ngành: toggle
57
○ Ngôn ngữ: toggle
○ Sở thích: toggle
● System validates and updates profile’s information:
○ Success: system changes information on the display area.
○ Fail: system shows an error message based on the member’s actions.
● Alternative Flow:
Actor sends a request to The system cancels the update process and returns
cancel the update profile to the “Call Profile Setting” screen.
display options.
● Business rules:
○ Member can set which field in the profile will be displayed to another user
when calling.
● Function trigger: Member requests to upload the new avatar for their profile by clicking in
the avatar area and choosing a new image.
● Function description: This feature allows the Member to change the avatar of their profile by
uploading a new image from the device.
● Screen layout:
58
● Function details:
● Pre-condition:
○ Member logged into the system.
○ Member already have images on their device.
○ Member is currently on the “My Profile” page.
● Flow:
○ Member click on the avatar area and choose the image that they want to
upload.
○ System uploads the new avatar.
● System validates and uploads the new avatar for the profile:
○ Success: system uploads the new avatar, and shows a success message.
○ Fail: system shows an error message based on the member’s actions.
● Alternative Flow:
59
Actor sends the request to The system cancels the process and closes the File
cancel the selected avatar window.
image.
● Business rule:
○ If the Member does not upload an avatar, the system will use the default
avatar based on the user’s gender.
○ System allows uploading images with extensions: JPG and PNG.
○ Member can only upload 1 avatar each time.
○ In case the Member already has their own avatar, the current upload image
will replace the old avatar.
● Exception:
Selected file is not an The selected file is not an image type. The system
image type. The system shows an error that the file is not an image type.
shows an error that the file
is not an image type.
● Function trigger: The Member wants to view all posts by clicking on the “Trang cá nhân”
button.
● Function description: This feature allows the Member to view all posts of themselves, the list
of posts can be viewed on a profile page, post is the image.
● Screen layout:
60
● Function details:
● Pre-condition:
○ Member logged into the system.
○ Posts have been created by the Member.
● Flow:
○ Member click on the “Trang cá nhân” button.
○ System displays a post list in the “Post” area.
● System gets post list:
○ Success: system shows the post list of the selected user.
○ Fail: system shows an error message based on the Member’s actions.
● Business rule:
○ Only users with the “Premium Member” role can view a friend’s post.
● Function trigger: Member requests to upload the new post for their profile by clicking on the
“Tải ảnh” card and choosing a new image.
● Function description: This feature allows the Member to upload a new post of their profile
by uploading a new image from the device.
61
● Screen layout:
● Function details:
● Pre-condition:
○ Member logged into the system.
○ Member is currently on the “My Profile” page
● Flow:
○ Member click on the post area “Tải ảnh” and choose the image that they
want to upload.
○ System displays the new post on the “My Profile” page.
● System validates and uploads the new post for the profile:
○ Success: system uploads the new post and shows a success message.
○ Fail: system shows an error message based on the Member’s actions.
● Alternative Flow:
62
Actor sends the command The system cancels the process and closes the File
to cancel the selected window.
image.
● Business rule:
○ System allows uploading images with extensions: JPG and PNG.
○ Member can only upload 1 avatar each time.
● Exception:
Selected file is not an The system shows an error that the file is not an
image type. image type.
3.3.5 Call
63
● Function details:
● Pre-condition:
○ Member logged into the system.
○ Member is currently on the “Home” page or “Call Queue Setup” page.
○ Member has already finished their minimum profile information.
○ Member not find call or in the call at the same time in other device by the
same account
● Flow:
○ Member send a request to find a call based on the set criteria (feature
3.3.5.11) and wait to be matched with other suitable members in the system.
○ System finds other suitable members in the system based on criteria set
before.
64
● System finds the other suitable user:
○ Success: system redirects the Member to the “Call Anonymous Reveal” page
and starts the call process.
○ Fail: system shows an error message based on the member’s actions.
● Alternative Flow:
Member clicks the “Dừng” The system cancels the process and redirects back
button to send the request to the “Home” page.
to stop the finding call
process.
Member clicks “Đồng ý” System starts a new finding call process based on
the new criteria selected by the user
65
Member clicks “Tiếp tục tìm System continues to search for calls without
kiếm” changing the criteria
● Business rule:
○ Users can only find the call when allowing system access to the device’s
microphone.
○ System will match 2 users based on criteria that were set before.
○ Users can not find the call if the same account but in another device or tab of
the browser has already found a call or in another call.
● Exception:
Member has already found The system cancels the finding process and shows an
the call at another device error message.
or another tab of the
browser.
● Function trigger: After being matched with another member by the system, the member will
be redirected to the “Call Anonymous Reveal” page.
● Function description: This feature allows the Member to guess which of the 3 random
people is the one who has been paired with them by the system.
● Screen layout:
66
● Function details:
● Pre-condition:
○ Members are matched with another user in the system (feature 3.3.5.1).
● Flow:
○ Member can guess which one from 3 random users is the one who matched
with them by the system by clicking on 3 images.
● System gets random other 2 users in the system:
○ Success: system displays 3 hidden cards containing 1 correct user and 2
random users in the system.
○ Fail: system ends the current call, redirects the Member to the home page
and shows an error message based on the Member’s actions.
● Business rules:
○ Guessing process can only be started after the find call process is done.
67
○ The guessing process will take 3 seconds.
○ Except for 1 correct user, the other 2 users will be chosen in a random way by
the system.
○ System will not notice if the Member is guessing correctly or not.
● Exception:
Member closes the tab of The system cancels the finding process.
the browser or clicks the
back button
68
● Function details:
● Pre-condition:
○ Member is matched with another user in the system (feature 3.3.5.1).
● Flow:
○ Member can start talking with another user in the call after guessing the
correct user.
● System starts the call process:
○ Success: system connects the microphone and allows 2 users in the call to
talk with each other.
○ Fail: system ends the call and shows the error message.
● Business rules:
○ System will have a timer to count the time of the call
○ The call will only start after the guessing process is done.
● Exception:
Member closes the tab of The system cancels the finding process.
the browser or clicks the
back button
● Function trigger: Member can view another user’s profile in the call by clicking on the card of
the other profile in the call.
● Function description: This feature allows the Member to view the profile detail of another
user in the call.
● Screen layout:
69
● Function details:
● Pre-condition:
○ Member is currently on the call (feature 3.3.5.3).
● Flow:
○ Member clicks on the card of the other profile.
○ System displays another user’s profile in the call.
● Member can view the detailed information of selected user’s profile:
○ Avatar: image.
○ Tên/ biệt danh: text.
○ Gender: icon.
○ Tuổi: number.
○ Chiều cao: text.
○ Quê quán: text.
○ Xu hướng tính dục: text.
○ Công việc/ trường: text.
○ Ngôn ngữ: text.
○ Sở thích: text.
70
● System gets another user’s profile in the call:
○ Success: system displays another user’s profile in the call.
○ Fail: system shows an error message based on the Member’s actions.
● Business rules:
○ Member can only view information that is not hidden by another user in the
call from their setting.
○ Member can use this feature while the call is not ended.
● Function details:
● Pre-condition:
71
○ Member is currently on the call (feature 3.3.5.3).
● Flow:
○ Member clicking on the “Bắt đầu trò chơi kiến tạo tại đây” area.
○ Another user in the call receives the request to join the constructive
questions process and clicks the “Đồng ý” button.
○ System mutes both users and starts the answer constructive questions
process (feature 3.3.5.6).
● System starts the answer constructive questions process:
○ Success: system mutes both users and starts to answer constructive
questions.
○ Fail: system shows an error message based on the Member’s actions.
● Alternative Flow:
Member click the “Đồng ý” System mutes both users and starts the answer
button. constructive questions process
● Business rules:
○ The answering process can only be started when both 2 users in the call
accept.
○ Member can only answer matching questions once per call.
72
● Function details:
● Pre-condition:
○ Both 2 users in the call accept requests to start the answer process (feature
3.3.5.5).
● Flow:
○ Member answer the constructive questions and wait for another user in the
call to complete the answer process too.
○ System stored the answer and calculate result of the constructive question
process
● Member can view 6 questions with information:
○ Time left to answer the questions: number.
○ Question’s title: text.
○ List of answers: text.
● System starts the answer constructive questions process:
○ Success: system displays 6 questions and the Member can answer them.
○ Fail: system shows an error message based on the Member’s actions.
● Business rules:
73
○ The time for answering each question is 60 seconds, and the default answer
will always be the first one.
○ System displays 6 questions in each answering process.
● Function details:
● Pre-condition:
○ Both users in the call finished the answer process (feature 3.3.5.6).
● Flow:
○ Member can view the result after both 2 users complete the answering
process.
● Member can view the result with the information:
74
○ The matching percent of 2 users: number.
○ The answers of 2 users: text.
● System calculates the result of the answer constructive questions process:
○ Success: system displays the result that is currently calculated.
○ Fail: system shows an error message based on the Member’s actions.
● Business rules:
○ The percentage match of both users will be calculated based on the number
of similar answers to the same question
● Function details:
● Pre-condition:
○ Member is in the call (feature 3.3.5.3).
75
● Flow:
○ Member click the end call button.
○ System end the call and redirect him/her to the “Home” page.
● System is requested to end the current call:
○ Success: system ends the current call and redirects the Member to the “Call
Rating” page.
○ Fail: system shows an error message based on the member’s actions.
● Alternative Flow:
Another person in the call The system redirects the user to the call rating page
clicks the “Dừng” button.
● Business rules:
○ The call will automatically end when 1 in 2 users in the call send the request
to end the call.
● Exception:
One of 2 user in the call The system show confirm modal that the user really
closes the tab of the want to end call.
browser or clicks the back
button
76
● Function details:
● Pre-condition:
○ Member has ended the call (feature 3.3.5.8).
● Flow:
○ Member can rate the current ended call by selecting the number of stars and
3 tags about another user in the call and then clicking the “Hoàn tất” button.
○ System stores information about the call rating and redirects the Member to
the “Home” page.
● Data inputs:
○ Rating star: choose the number of stars, required, numbers 1-5.
○ Keyword tag: choose 3 keywords in 20 keywords about another person,
required, min 3 tags.
● System stores the rating information:
○ Success: system shows success messages and redirects the Member to the
home page.
○ Fail: system shows an error message based on the Member’s actions.
● Business rules:
77
○ Member must choose at least 3 tags and 1 star.
● Exception:
User closes the tab of the The system does not store data about call rating.
browser or clicks the back
button
● Function details:
78
● Pre-condition:
○ Member logged into the system.
● Flow:
○ Member clicks the “Tùy chỉnh cuộc gọi” on the “Home” page.
○ System displays the criteria of the Member.
● Member can view the call criteria filter including the following information:
○ Giới tính: text.
○ Quê quán: text.
○ Độ tuổi: text.
○ Chủ đề: text.
○ Ngôn ngữ: text.
○ Xu hướng tính dục: text.
● System gets the call criteria filter:
○ Success: system displays the call criteria filter.
○ Fail: system shows the error message based on the Member’s action.
● Business rules: N/A
79
● Function details:
● Pre-condition:
○ Member logged into the system.
○ Member is currently on the “Call Queue Setup” page.
● Flow:
○ Member choose the field that when to change the criteria.
○ System stores new values and displays the new value of the selected criteria
on the display area.
● Member can view toggle fields:
○ Giới tính: choose the value in the dropdown..
○ Quê quán: choose the value in the dropdown..
○ Độ tuổi: choose the value in the dropdown..
80
○ Chủ đề: choose the value in the dropdown..
○ Ngôn ngữ: choose the value in the dropdown..
○ Xu hướng tính dục: choose the value in the dropdown..
● System validates and updates profile’s information:
○ Success: system changes information on the display area.
○ Fail: system shows an error message based on the member’s actions.
● Business rules:
○ Default value of all criteria fields is “Tất cả”.
○ All criteria fields with a value of "Tự động" are considered compatible with
all values of that field.
81
● Function details:
● Pre-condition:
○ Member logged into the system.
● Flow:
○ Member click on the “Notification” icon on the tab bar.
○ System displays the list of notifications.
● Member can view notifications based on the type of notification:
○ Avatar of the user: image
○ Name of user: text
○ Content of notification: text, based on notification type
○ Time since the notification is sent.
● System gets notification list:
82
○ Success: system displays the notification list.
○ Fail: system shows an error message based on the Premium Member’s
actions.
● Business rules:
○ Notification will be automatically deleted when the Member clicks on that.
● Function details:
● Pre-condition:
○ Premium Member has already logged into the system by premium member
role.
83
○ Premium is currently on the call history page.
○ Premium Member called at least 1 call.
● Flow:
○ Premium Member clicks on the Call icon in the tab bar.
○ System displays the list of call history of he/she.
● Premium Member can view the list of call history with the following information for
each item in the list:
○ Avatar of another user in the call: image.
○ Name of another user in the call: text.
○ Time of the call: text.
● System gets call history list:
○ Success: system displays the call history list.
○ Fail: system shows an error message based on the Premium Member’s
actions.
● Business rules:
○ Call history list will automatically add a new one when matching success.
● Exception:
84
● Function details:
● Pre-condition:
○ Premium Member has already logged into the system by premium member
role.
○ Premium is currently on the “Call Histories” page.
● Flow:
○ Premium Member clicks on the selected call history card.
○ System displays the details of the selected call history.
● Premium Member can view details of the selected call history with the information:
○ Avatar of another user in the call: image.
○ Name of another user in the call: text.
○ Time of the call: text.
○ Hợp nhau về quan điểm: number.
○ Cảm nhận về người ấy: 3 tags.
○ Cảm nhận của bạn: 3 tags.
○ Number of starts.
○ Nhắn tin: button.
85
○ Kết bạn: button
● System gets detailed of the selected call history:
○ Success: system displays details of the selected call history.
○ Fail: system shows an error message based on the Premium Member’s
actions.
● Business rules:
○ Call History actions will be changed based on the friend status of 2 users in
that call history.
○ When the user in call history changes the status to “Vô hiệu hóa” data that
user will change to inactive data.
86
● Function details:
● Pre-condition:
87
○ Last message: text.
● System gets conversation list:
○ Success: system displays the conversation list.
○ Fail: system shows an error message based on the Premium Member’s
actions.
● Business rules:
○ Conversation list only contains conversation messages inside.
○ Conversation list will automatically add a new one when 2 users send
messages to each other.
○ The conversation that is not seen by the user will have a more bright
background colour.
● Exception:
Premium Member don’t System informs “Không có cuộc trò chuyện để hiển
have any conversations. thị”.
88
● Function details:
● Pre-condition:
○ Premium Member has already logged into the system by premium member
role.
○ The selected conversation has at least 1 message.
● Flow:
○ Premium Member clicks on selecting the conversation.
○ System displays all messages in the selected conversation.
● Premium Member can view messages following information:
○ User's own avatar: image, displayed on the right of the screen.
○ User's own messages: free text, displayed next to the user's own avatar.
○ Another avatar in conversation: image, displayed on the left of the screen.
89
○ Another message in the conversation: free text, displayed next to the other
user's avatar in conversation.
● System gets messages in the selected conversation:
○ Success: system displays 15 latest messages of selected conversation.
○ Fail: system shows an error message based on the Premium Member’s
actions.
● Alternative Flow:
90
● Function details:
● Pre-condition:
○ Premium Member has already logged into the system by premium member
role.
○ Premium Member has already made calls with another user in the
conversation.
● Flow:
○ Premium Member send messages to another user in the conversation after
inputting the message and clicking the send button.
○ System appends a new message as the last message on the conversation.
91
○ Another user in the conversation receives the new message and the
notification about that new message.
● System store new messages:
○ Success: system store message and append a new message as the last
message of the conversation
● Business rules:
○ The message sent will automatically update to the last message and display
outside the list of conversations.
○ Input message field will be disabled when another user in conversation
changes status to “Vô hiệu hóa” and the Member can’t send messages to
he/she anymore.
○ Message only sends when the input field is not empty or null.
● Exception:
92
● Function details:
● Pre-condition:
○ Member logged into the system.
○ Member has started doing or finished at least 1 MBTI test.
● Flow:
○ Member clicking on the “Tính cách của bạn” button on the “Home” page.
○ System displays all his/her MBTI tests
● Member can view the list of MBTI tests with the following information for each item
in the list:
○ Lịch sử khảo sát: text, the time format is DD/MM/YYYY - hh:mm.
○ Kiểu tính cách: text, display 1 on 16 MBTI types.
● System gets the MBTI test:
○ Success: system displays the list of MBTI tests.
93
○ Fail: system shows an error message based on the Premium Member’s
actions.
● Business rules: N/A
● Exception:
Not existing MBTI tests in the System shows the “Bạn chưa thực hiện bài
database. trắc nghiệm nào” message.
94
● Function details:
● Pre-condition:
○ Member has already logged into the system.
○ Member is currently on the ”Personality Tests History” page.
● Flow:
○ Member click on the selected MBTI test.
○ System displays the detail of the selected MBTI test
● System displays MBTI test detailed with the following information:
95
○ Users can only view details of the finished MBTI tests.
96
● Function details:
● Pre-condition:
97
○ Member has already logged into the system.
○ Member is currently on the “Personality Test History” page.
● Flow:
○ Member clicks the “Thực hiện trắc nghiệm” button.
○ System displays 32 MBTI questions and starts the MBTI Test process.
○ Member answer by choosing 1 of 5 options.
● Member can view MBTI questions with the following information:
○ Number of MBTI questions: number, length 1-32.
○ Question title: text.
○ Answer: choose 1 in 5 options.
● System gets MBTI questions:
○ Success: system displays MBTI questions and the Member can start the MBTI
test.
○ Fail: system shows an error message based on Member’s action.
● Alternative Flow:
Member continues doing the System displays MBTI questions, starting from
selected MBTI test that is not the last question that the Member has not
done yet by clicking the “Tiếp finished yet.
tục” button.
● Business rules:
○ Users can only do a new MBTI test when the old one has already been
calculated.
○ If users do 16 on 32 MBTI questions, the system will ask if the user wants to
continue to do the rest or can finish it later.
○ System now supports 32 MBTI questions in total.
● Exception:
System does not calculate the old System shows dialogue to confirm that the
MBTI test done yet user wants to do another MBTI test.
98
3.3.10 Manage Friend Request
● Function details:
● Pre-condition:
○ Member have already logged into the system.
○ Member is currently on the “Friend” page.
○ Member has at least 1 friend request.
● Flow:
99
○ Member clicks on the ”Xem tất cả” button on the “Friends” page.
○ System displays the list of friend requests.
● Member can view the list of friend requests with the following information for each
item in the list:
○ Avatar of friend: image.
○ Name of friend: text.
○ Hợp nhau về quan điểm: number.
○ Xác nhận: button.
○ Xóa: button.
● System gets the friend requests list:
○ Success: system displays the friend requests list.
○ Fail: system shows the error message based on Member’s action.
● Business rules:
○ If 2 friend requests or fewer exist, users can view them outside the friend
page.
● Exception:
Not existing any friend System shows the “Không có lời mời kết bạn nào”
requests. message.
100
● Function details:
● Pre-condition:
○ Member have already logged into the system.
● Flow:
○ Member sends the request to view details of the selected friend request.
○ System displays details of the selected friend request.
● Member can view the detail of the friend request with the following information:
○ Avatar of friend: image.
○ Name of friend: text.
○ Hợp nhau về quan điểm: number.
○ Xác nhận: button.
○ Xóa: button.
● System gets the detail of the selected friend request:
○ Success: system displays the details of the selected friend request.
○ Fail: system shows the error message based on Member’s action.
● Business rules: N/A
101
3.3.10.3 Send Friend Request
● Function trigger: Premium Member want to send a friend request by clicking on the “Kết
bạn” button on the expanded call history card at the “Call Histories” page.
● Function description: This feature allows the Premium Member to send a friend request to
called users in call history.
● Screen layout:
● Function details:
● Pre-condition:
102
○ Premium Member is currently on the “Call Histories” page.
● Flow:
○ Premium Member clicks on the “Kết bạn” button on the expanded call
history card.
○ System sends a friend request to another user and pushes the notification to
the receiver.
● System validates the resolving content:
○ Success: system sends a friend request to the receiver and updates the status
of the friend request of the Premium member.
○ Fail: system does not send a friend request and shows a specified error
message on a popup.
● Business rules:
○ Receiver must be used to call the sender.
○ Receiver must have “Kích hoạt” status.
○ If the user was denied a friend request in the past, the user can not send a
friend request again to that account.
○ Premium Member can not send the friend request again to the account
being a friend.
● Exception:
Premium Member has System displays the error message and cancels the
already sent a friend sending process.
request.
103
● Function details:
● Pre-condition:
○ Member have already logged into the system.
○ Member currently view details of the friend request that they want to accept
(feature 3.3.10.2).
● Flow:
○ Member click on the “Xóa” button on the selected “Friend Request'' modal.
○ System changes the status of a friend request and the sender can not send
another friend request to the Member.
● System validates the resolving content:
○ Success: system changes the status of a friend request and displays a success
message.
104
○ Fail: system cancels deny process and shows a specified error message on a
popup dialog.
● Business rules:
○ Sender of the friend request must not be in the friend list of the receiver yet.
○ Sender of friend requests must have “Kích hoạt” status.
● Function details:
● Pre-condition:
105
○ Member have already logged into the system.
○ The Admin currently views a detailed friend request that they want to accept
(feature 3.3.10.2).
● Flow:
○ Member clicks on the “Xác nhận” button on the selected friend request
modal.
○ System adds 2 users to list friends with each other.
● System validates the resolving content:
○ Success: system adds 2 users to list friends of each other and displays a
success message.
○ Fail: system cancels the accepted process and shows a specified error
message on a popup dialog.
● Business rules:
○ Sender of the friend request must not be in the friend list of the receiver yet.
○ Sender of the friend request must have “Kích hoạt” status.
○ When success accepts a friend request, the avatar of the friend will be
changed to a clear one
106
● Function details:
● Pre-condition:
107
○ Giới tính: icon.
○ Tuổi: number.
○ Quê quán: text.
○ Number of starts.
○ Công việc/ trường: text.
○ Chuyên ngành: text.
● System gets friend request list:
○ Success: system displays the friend request list.
○ Fail: system shows the error message based on Premium Member’s action.
● Business rules:
○ Friend list just only displays users who have “Kích hoạt” status.
○ Friends in the list are default sorted by time accepted.
○ Search criteria include: search by product name of friends.
● Exception:
108
● Function details:
● Pre-condition:
○ Premium Member has already logged into the system by premium member
role.
○ Premium Member has already been a friend with an account that wants to
view the profile.
● Flow:
○ Premium Member clicks on the friend item on the list.
○ System displays the profile of the friend on the screen.
● System gets details of the selected friend profile:
109
○ Fail: system shows a specified error message on a popup dialog.
● Business rules:
○ User can only view the profile of the user have the status “Kích hoạt”
○ Both users must be friends to view the profile of each other.
● Exception:
selected friend is currently System redirects the user back to the friend list page
changed status to “Vô hiệu and updates the friend list to hide information of the
hóa” selected friend.
3.3.11.3 Unfriend
● Function trigger: Premium Member want to unfriend their friend by clicking on the “Hủy kết
bạn” button.
● Function description: This feature allows the Premium Member to delete the selected friend.
● Screen layout:
110
● Function details:
● Pre-condition:
● Flow:
○ Premium Member clicks on the “Hủy kết bạn” button.
○ System deletes 2 users from each other's friend list.
● System validates the resolving content:
○ Success: system updates the list of friends of the user to remove the selected
friend that was deleted.
● Exception:
111
Cause System Response
Actor already deleted a System shows an error that did not find the selected
selected friend from the friend to delete.
list
3.4.1 Authenticate
3.4.1.1 Log In
● Function trigger: Admin requests login into the admin dashboard system by filling in the
email and password and tapping on the “Đăng nhập” button.
● Function description: This feature allows Admin login into the Destinee Admin Dashboard
System as the Admin Member role, giving them access to features for each role in the Admin
System.
● Screen layout:
● Function details:
● Pre-condition:
○ Admin already has an account in the Destinee Dashboard System yet.
● Flow:
○ Admin sends the request to login into the system by providing email and
password.
○ After the validation step, the Admin will allow logging into the system as the
admin role.
● Data inputs:
112
○ Email: email format, required.
○ Password: must have at least 8 characters, at least 1 letter and 1 number,
required.
● System checks email and password through the Firebase:
○ Success: System displays the successful message and redirects the user to
the dashboard home page.
○ Fail: System prevents the user from accessing and shows an error message
based on the actor’s actions.
● Business rules:
○ Only the member who is authorised as Admin and has “Kích hoạt” status can
log into the Dashboard system.
● Exceptions:
Required fields are missing The system shows error messages for each missing
field.
Required information The system shows error messages for each not valid
fields are not valid. field.
The required information The system shows error messages for each incorrect
fields are not correct. field.
113
● Business rules: N/A.
● Function details:
● Pre-condition:
○ Admin already has an account in the Admin System.
● Flow:
○ Admin sends the request to view the list of accounts.
○ System displays the account list on the screen.
● Admin can view the account list with the following information:
○ ID: text.
○ Email: text, email format.
○ Chức vụ: text.
○ Trạng thái: text.
○ Ngày tạo: text.
○ Xem hồ sơ tài khoản: button.
○ Đổi mật khẩu: button.
114
○ Nâng cấp: button.
○ Vô hiệu hóa: button.
● System gets account list:
○ Success: system displays account list.
○ Fail: system shows the error message based on the Admin’s action.
● Business rules:
○ The list is default sorted by the “Ngày tạo” field in descending order.
○ Search criteria for account list contains: search by email, filter by role.
○ If the account with the “Admin” role, the following information will not
show:
● Function details:
115
● Pre-condition:
○ Admin already has an account in the Admin System.
○ Admin is currently on the “Manage Profile” page.
● Flow:
○ Admin sends the request to view details of a specific account
○ System opens the profile drawer to display the current information about the
selected account.
● Admin can view account information:
○ ID: text.
○ UID: text.
○ Email: text, mail format.
○ Chức vụ: text.
○ Trạng thái: text.
○ Ngày tạo: text.
○ Vô hiệu hóa: button.
○ Đóng: button.
● System gets details of the selected account:
○ Success: system displays the account information.
○ Fail: system shows the error message based on the Admin’s action.
● Alternative Flow:
116
● Function details:
● Pre-condition:
○ Admin already has an account in the Admin System.
○ Admin is currently on the “Manage Accounts” page.
● Flow:
○ Admin clicks the “+ Tạo tài khoản” button on the “Tài khoản” page.
○ System displays the “Account Create” modal.
○ Admin fills in new admin account information then clicks the “Lưu” button to
create a new admin account
○ After the validation step, the system will create an account and have a role as
admin and “Kích hoạt” status.
● Data input:
○ Email: email format, required.
○ Nhập mật khẩu: hidden text, must have at least 8 characters, at least 1
letter and 1 number, required.
○ Xác nhận mật khẩu: hidden text input, must be same as the “Nhập mật
khẩu” field, required.
○ Chức vụ: Quản trị viên
● System validates the new account’s information:
○ Success: System creates a new admin account based on the information
provided and has the “Kích hoạt” status, displays the success message and
close modal.
○ Fail: System shows an error message based on the Admin’s actions.
117
● Alternative Flow:
Admin clicks outside the modal System close account create modal.
to close the account create
modal
● Business rules:
● Exceptions:
Required fields are missing The system shows error messages for each
missing field.
Required information fields The system shows error messages for each not
are not valid. valid field.
118
● Function details:
● Pre-condition:
○ Admin already has an account in the Admin System.
○ Admin is currently on the ”Manage Accounts” page.
● Flow:
○ Admin clicks the “Đổi mật khẩu” button of a specific account item on the
account list shown in the table on the ”Manage Accounts” page.
○ System opens “Password Reset” modal.
○ Admin fills in new password information to update the password.
○ After the validation step, the system will change the password of the
selected account.
● Data inputs:
○ Mật khẩu mới: must have at least 8 characters, at least 1 letter and 1
number, required.
○ Xác nhận mật khẩu: must be the same as “Mật khẩu” field, required.
● System validates the resolving content:
○ Success: System updates the password and shows the successful message.
○ Fail: System shows the error message.
● Alternative Flow:
119
Admin clicks outside the modal System close “Thay đổi mật khẩu” modal.
to close the “Thay đổi mật
khẩu” modal.
● Business rules:
○ The account that is reset password will automatically be logged out of the
system.
● Exceptions:
Required fields are missing The system shows error messages for each missing
field.
Required information The system shows error messages for each not valid
fields are not valid. field.
120
● Function details:
● Pre-condition:
○ Admin already has an account in the Admin System.
○ Admin is currently on the ”Manage Accounts” page.
● Flow:
○ Admin clicks the “Vô hiệu hóa” or “Kích hoạt lại” button of a specific account
item on the account list shown in the table on the ”Manage Accounts” page.
○ System opens “Update Account Status” modal.
○ Admin clicks confirm button to send the request to update the account’s
status
○ The system will update the status of the selected account.
● System shows confirm dialog and two buttons for Admin to select:
○ Vô hiệu hóa or Kích hoạt: button
○ Hủy: button
● System change status of account:
○ Success: System updates the status of an account and shows the successful
message.
○ Fail: System shows the error message.
● Alternative Flow:
121
Admin clicks outside the modal System closes the “Update Account Status”
to close the “Update Account modal.
Status” modal.
● Business rules:
○ The user’s account after being changed status to “Vô hiệu hóa” will logout of
the User System and can not access the system.
○ “Trạng thái” field only has 2 states “Vô hiệu hóa” and “Kích hoạt”
○ In case the account is logging into the system will automatically log out of the
system if the status of that account is changed from “Kích hoạt” to “Vô hiệu
hóa”.
● Function details:
● Pre-condition:
○ Admin has already logged into the system.
○ Existed at least 1 account’s profile.
122
● Flow:
○ Admin sends the request to view the list of profiles.
○ System displays the profile list on the screen.
● Admin can view the table containing the list of the account information:
○ #: number
○ Tên: text, image.
○ Số cuộc gọi: number.
○ Thời lượng gọi: text.
○ Thời lượng mỗi cuộc gọi: text.
○ Tỉ lệ hủy hàng chờ: number.
○ Được đánh giá: number.
○ Đánh giá: number.
○ MBTI type: text.
○ Trạng thái: text.
○ Ngày tạo: text.
○ Xem chi tiết hồ sơ: button.
○ Xem chi tiết tài khoản: button.
● System gets profile list:
○ Success: system display profile list.
○ Fail: system shows the error message based on the Admin’s action.
● Business rules:
○ The list is default sorted by the “Số cuộc gọi” field in descending order.
○ Search criteria for the account list contains: search by username, search by
“tên”, filter by “trạng thái”, and MBTI type.
○ List can be sorted by “thời lượng cuộc gọi”, “Thời lượng mỗi cuộc gọi”, “Tỉ
lệ hủy hàng chờ”, “Được đánh giá”, “Đánh giá”, “Ngày tạo” fields.
● Exceptions:
123
● Function description: This feature allows the Admin to get details of the selected profile
information.
● Screen layout:
● Function details:
● Pre-condition:
○ Admin has already logged into the system.
○ Admin is currently on the “Manage Profiles” page.
● Flow:
○ Admin sends the request to view details of a specific profile.
○ System opens the “Profile Detail” drawer to display the current information
about the selected profile.
● Admin can view details of selected profile:
○ Basic profile information:
■ Account’s avatar: image.
■ Nickname: text.
■ Ngày sinh: text, DD/MM/YYYY format.
■ Xu hướng tính dục: text.
■ Chiều cao: text.
■ Quên quán: text.
■ Công việc: text.
■ Chuyên ngành: text.
■ Ngôn ngữ: text.
■ Sở thích: text.
124
■ Kiểu tính cách: text.
■ Trạng thái: text.
■ Số bài kiểm tra tính cách đã thực hiện: number.
■ Số bạn bè: number.
■ Số bài đăng: number.
○ Profile’s statistics data:
■ Số cuộc gọi: number.
■ Số lần hủy hàng chờ: number.
■ Tỉ lệ bỏ hàng chờ: number.
■ Tổng thời lượng cuộc gọi: number.
■ Thời lượng trung bình 1 cuộc gọi: number.
■ Thời lượng trung bình 1 hàng chờ (thành công): number.
■ Thời lượng trung bình 1 hàng chờ (thất bại): number.
■ Được đánh giá: number.
■ Đánh giá: number.
○ Profile’s keyword data:
■ Keyword: text.
■ Lượt đánh giá: number.
● System gets details of the selected profile:
○ Success: system displays details of the selected profile.
○ Fail: system shows the error message based on the Admin’s action.
● Alternative Flow:
○ Profiles that don't have statistics data will be hidden in the statistics box.
125
● Function description: This feature allows the Admin to see the title, answer, date created,
and question’s status.
● Screen layout:
● Function details:
● Pre-condition:
○ Admin has already logged into the system.
○ Existed at least 1 constructive question.
● Flow:
○ Admin sends the request to view the list of constructive questions.
○ System displays the constructive question list.
● Admin can view the list of constructive questions:
○ #: number.
○ Tiêu đề câu hỏi: text.
○ Số câu trả lời: number.
○ Số lần hiển thị: number.
○ Trạng thái: text.
○ Ngày tạo: text.
○ Xem chỉnh sửa: button.
○ Vô hiệu hóa: button.
● System gets the list of constructive questions:
○ Success: system displays the list of constructive questions.
○ Fail: system shows the error message based on the Admin’s action.
● Business rules:
126
○ The constructive question list is default sorted by the “Ngày tạo” field in
descending order.
○ Search criteria for the constructive questions list are: search by question title.
● Exceptions:
● Function details:
● Pre-condition:
○ Admin has already logged into the system.
○ Admin is currently in the “Manage Constructive Questions” page.
● Flow:
○ Admin sends the request to view details of the selected constructive
question.
○ System displays the current information about the constructive question
● Admin can view detail of the selected constructive question:
127
○ ID: text.
○ Ngày tạo: text.
○ Trạng thái: text.
○ Tiêu đề: text.
○ Câu trả lời: text.
● System gets the detail of the selected constructive question:
○ Success: system displays the detail of the selected constructive question.
○ Fail: system shows the error message based on the Admin’s action.
● Alternative Flow:
● Function details:
● Pre-condition:
128
○ Admin has already logged into the system.
○ Admin is currently in the selected “Constructive Question Detail” drawer.
● Flow:
○ Admin changes the text in the input field of the answer wanted to change
and clicks the “✔” button to update.
○ System replaces the old answer with the new currently updated one.
● System validates the resolving content:
○ Success: The system updates the answer to a question and shows the
successful message.
○ Fail: The system shows an error message based on the Admin’s actions.
● Alternative Flow:
Admin clicks outside the System closes the “Constructive Question Detail”
drawer to close the drawer.
“Constructive Question Detail”
drawer.
● Business rules:
○ Only can update answers when the new answer is different from the old one.
If the new answer is the same as the new one, the update button will be
disabled.
○ The data of old answers that were used in the past will not change.
○ The answer can only update after being validated by the system with no fault
found.
● Exceptions:
Required fields are missing The system shows error messages for each missing
field.
Required information The system shows error messages for each not valid
fields are not valid. field.
129
● Function description: This feature allows the Admin to create new answers to the selected
constructive question.
● Screen layout:
● Function details:
● Pre-condition:
○ Admin has already logged into the system.
○ Admin is currently in the selected “Constructive Question Detail” drawer.
● Flow:
○ Admin clicks to “+ Câu trả lời ”.
○ Admin fills in the input field and clicks the “✔” button to create more
answers.
○ System appends new input at the end of the list of answers.
● System validates the resolving content:
○ Success: system stores the new question and shows the successful message.
○ Fail: system shows an error message based on the Admin’s actions.
● Alternative Flow:
Admin clicks outside the System closes the “Constructive Question Detail”
drawer to close the drawer.
“Constructive Question Detail”
drawer.
● Business rules:
130
○ Users can only create a maximum of 5 answers.
○ The new answer must be different from answers existing in the same
question.
○ The answer can only be created after being validated by the system with no
fault found.
● Exceptions:
Required fields are missing The system shows error messages for each missing
field.
Required information The system shows error messages for each not valid
fields are not valid. field.
● Function details:
● Pre-condition:
○ Admin has already logged into the system.
131
○ Admin is currently in the selected “Constructive Question Detail” drawer.
● Flow:
○ Admin clicks on the icon trash button to send the request to remove the
selected answer.
○ System removes the selected answer from the list.
● System validates the resolving data:
○ Success: system removes the answer and shows the successful message.
○ Fail: system shows an error message based on the Admin’s actions.
● Alternative Flow:
Admin clicks outside the System closes the “Constructive Question Detail”
drawer to close the drawer.
“Constructive Question Detail”
drawer.
● Business rules:
○ Admin can not continue to delete answers if there existed two or fewer
answers in the specific constructive question.
132
● Function details:
● Pre-condition:
○ Admin has already logged into the system.
○ Admin is currently on the “Manage Constructive Questions” page.
● Flow:
○ Admin clicks on the “+ Tạo câu hỏi” button.
○ System displays the ”Constructive Question Create” drawer.
○ Admin fills in constructive question and 2 answers information to send the
request to create a new constructive question.
○ System adds the currently created constructive question into the
constructive question list.
● System validates the resolving content:
○ Success: The system stores the new constructive question and shows the
successful message.
○ Fail: The system shows an error message based on the Admin’s actions.
● Alternative Flow:
● Exceptions:
Required fields are missing The system shows error messages for each
missing field.
Required information fields are The system shows error messages for each not
not valid. valid field.
133
3.4.4.7 Change Constructive Question Status
● Function trigger: The Admin wants to change the selected constructive question status by:
○ Clicking the “Vô hiệu hóa” or “Kích hoạt” button on the “Manage Constructive
Questions” page.
○ Clicking the “Vô hiệu hóa” or “Kích hoạt” button on the selected ”Constructive
Question Detail” drawer.
● Function description: This feature allows the Admin to deactivate an account, preventing
questions from being used in the User System or reactive the selected constructive question
so that that question can be used again in the User System.
● Screen layout:
● Function details:
134
● Pre-condition:
○ Admin has already logged into the system.
● Flow:
○ Admin clicks on the “Vô hiệu hóa/Kích hoạt” button.
○ System opens the “Constructive Question Status Update” modal.
○ Admin clicks confirm button to send the request to update the selected
constructive question status
○ The system will update the status of the selected constructive question.
● System popups the confirm modal:
○ Admin clicks on the “Vô hiệu hóa/Kích hoạt” button: The question status
from “Kích hoạt” to “Vô hiệu hóa”.
○ Admin clicks on the “Hủy” button: Close the confirm modal.
● Alternative Flow:
Admin clicks outside the modal System closes the “Constructive Question Status
to close the “Constructive Update” modal.
Question Status Update”
modal.
● Business rules:
○ Status of question only have 2 states: “Kích hoạt” and “Vô hiệu hóa”.
○ Constructive questions that have “Vô hiệu hóa” status still can be updated
and deleted answers inside but can not be used in User System.
135
● Function details:
● Pre-condition:
○ Admin has already logged into the system.
○ Existed at least 1 call history.
● Flow:
○ Admin clicks on the “Lịch sử cuộc gọi” item in the sidebar.
○ System displays the list of call history on the screen.
● Admin can view the table containing the list of the call history:
○ Người tham gia #1: image, text.
○ Người tham gian #2: image, text.
○ Thời lượng: text.
○ Độ tương thích: number.
○ Lý do kết thúc: text.
○ Thời gian tạo: text.
○ Chi tiết cuộc gọi: button.
● System gets call history list:
○ Success: system displays the call history list
○ Fail: system shows the error message based on the Admin’s action.
● Business rules:
○ The list is default sorted by the “Ngày tạo” field in descending order.
○ If the call history end reason is “Hủy hàng chờ”, the following information
will not show:
136
■ Thời lượng
■ Độ tương hợp.
○ If the caller does not join answer the question game, “Độ tương hợp”
information will not show.
○ Search criteria include: search by product name of users in call history, filter
by “Lý do kết thúc”.
○ List can be sorted by “thời lượng cuộc gọi”, “Thời lượng”, “Độ tương hợp”,
“Thời gian tạo” fields.
● Exceptions:
● Function details:
● Pre-condition:
○ Admin has already logged into the system.
○ Admin is currently on the “Manage Call Histories” page.
137
● Flow:
○ Admin clicks on the “Chi tiết cuộc gọi” button.
○ System displays details of the selected call history.
● Admin can view details of the selected call history:
○ Basic information:
■ Thời lượng: text.
■ Ngày thực hiện: text.
■ Người kết thúc: text.
■ Mức độ hợp nhau: text.
○ Information of users in the call history:
■ Avatar: image.
■ Giới tính: icon.
■ Đánh giá: text.
■ Thời lượng hàng chờ: text
■ Tiêu chí tìm kiếm cuộc gọi:
● Giới tính: text.
● Độ tuổi: text.
● Vùng miền: text.
● Chủ đề: text.
● Ngôn ngữ: text.
● Xu hướng tính dục: text.
○ Constructive questions information:
■ Question title: text.
■ Answer: text
○ Đóng: button.
● System gets the detail of the selected call history:
○ Success: system displays the details of the selected call history.
○ Fail: system shows the error message based on Admin’s action.
● Alternative Flow:
Admin clicks outside the System closes the “Call History Detail” drawer.
drawer to close the “Call
History Detail” drawer.
● Business rules:
138
○ If the call history end reason is “Hủy hàng chờ”, caller 2 information will not
show.
○ If the caller does not join answer the question game, “Người chơi không
tham gia” will display on the “Câu hỏi kiến tạo” section.
● Function details:
● Pre-condition:
○ Admin has already logged into the system.
○ Existed at least 1 order.
● Flow:
○ Admin clicks on the “Đơn hàng” item in the sidebar.
○ System displays the list of orders on the screen.
● Admin can view the table containing the list of orders.
○ ID: text.
○ Người sở hữu: image, text.
○ Mô tả & số lượng: text.
○ Tổng tiền: number.
○ Trạng thái: text.
139
○ Tạo lúc: text.
○ Chi tiết đơn hàng: button.
○ Thông tin giao dịch: button
● System gets order list:
○ Success: system displays the order list.
○ Fail: system shows the error message based on the Admin’s action.
● Business rules:
○ The list is default sorted by the “Ngày tạo” field in descending order.
○ “Trạng thái” field has 3 value: “Thành công”, “Hủy”, “Đang thực hiện”.
● Exceptions:
● Function details:
● Pre-condition:
○ Admin has already logged into the system.
○ Existed at least 1 order.
140
● Flow:
○ Admin clicks on the “Chi tiết đơn hàng” item in the sidebar.
○ System displays the list of orders on the screen.
● Admin can view order information:
○ ID: text.
○ Người thực hiện: image, text.
○ Tổng tiền: number, money format.
○ Trạng thái: text.
○ Trạng thái: text.
○ Ngày tạo: text.
○ Danh sách các gói dịch vụ.
○ Đóng: button.
● System gets details of the selected order:
○ Success: system displays the order information.
○ Fail: system shows the error message based on the Admin’s action.
● Alternative Flow:
141
● Function details:
● Pre-condition:
○ Admin has already logged into the system.
○ Existed at least 1 payment.
● Flow:
○ Admin clicks on the “Lịch sử giao dịch” item in the sidebar.
○ System displays the list of payments on the screen.
● Admin can view the table containing the list of payments.
○ ID: text.
○ Cổng thanh toán: text.
○ Mô tả: text.
○ Tổng tiền: number.
○ Trạng thái: text.
○ Thời gian tạo: text.
○ Chi tiết giao dịch: button.
○ Thông tin đơn hàng: button
● System gets payment list:
○ Success: system displays the payment list.
○ Fail: system shows the error message based on the Admin’s action.
● Business rules:
○ The list is default sorted by the “Ngày tạo” field in descending order.
○ Search criteria include: filter by “Cổng thanh toán” and filter by “Trạng thái”.
○ “Trạng thái” field has 3 value: “Thành công”, “Thất bại”, “Đang giao dịch”.
142
● Exceptions:
● Function details:
● Pre-condition:
○ Admin has already logged into the system.
○ Existed at least 1 payment.
● Flow:
○ Admin clicks on the “Chi tiết giao dịch” item in the sidebar.
○ System displays the list of payments on the screen.
● Admin can view payment information:
○ Basic information:
■ ID: text.
■ Cổng thanh toán: text
■ Mô tả: text.
■ Đơn vị: text.
■ Trạng thái: text.
143
■ Ngày tạo: text
○ Information of gateway:
■ RefID: text.
■ Số tiền: number, money format.
■ Đơn vị: text.
■ bankCode: text.
■ Loại thanh toán: text.
■ CardType: text.
■ ipArr: text.
■ Tạo lúc: text.
■ Tồn tại đến: text.
■ Thanh toán lúc: text.
■ respCode: text.
■ Status: text.
○ Đóng: button.
● System gets details of the selected payment:
○ Success: system displays the payment information.
○ Fail: system shows the error message based on the Admin’s action.
● Alternative Flow:
144
● Function details:
● Pre-condition:
○ Admin has already logged into the system.
○ Admin is currently on the “Manage MBTI Tests” page.
● Flow:
○ Admin clicks on the “Trắc nghiệm tính cách” item in the sidebar.
○ System displays the MBTI test list.
● Admin can view the MBTI test list with the following information:
○ #: number.
○ Người thực hiện: image, text.
○ Số câu trả lời: number.
○ Kết quả: text.
○ Trạng thái: text.
○ Thời gian tạo: text.
○ Chi tiết: button.
● System gets MBTI test list:
○ Success: system displays the MBTI test list.
○ Fail: system shows the error message based on the Admin’s action.
● Business rules:
○ The list is default sorted by the “Thời gian tạo” field in descending order.
○ Search criteria include: filter by “Nhóm tính cách” and “Trạng thái” and
Name of user.
145
○ “Trạng thái” field has 3 value: “Thành công”, “Chưa hoàn tất”, “Chờ xử lý”.
● Function details:
● Pre-condition:
○ Admin has already logged into the system.
○ Admin is currently on the “Manage MBTI Tests” page.
● Flow:
○ Admin clicks on the “Chi tiết” button.
○ System displays the details of the selected MBTI test information.
● Admin can view details of the selected MBTI test information:
○ Basic MBTI test information:
■ ID: text
■ Người thực hiện: image, text.
■ Số câu hỏi: number.
■ Kết quả: text.
■ Trạng thái: text.
■ Ngày tạo: text
○ List of MBTI questions and the answer of each question:
146
■ Question title: text.
■ Answer: text.
● Alternative Flow:
Admin clicks outside the System closes the “MBTI Test Detail” drawer.
drawer to close the “MBTI Test
Detail” drawer.
● Business rules:
○ Only MBTI tests with the “Hoàn tất” state has the result.
3.4.9 Statistics
147
● Function details:
● Pre-condition:
○ Admin has already logged into the system.
○ Users in the User System have already rated after call and use constructive
questions while calling
● Flow:
○ Admin clicks on the “Trang chủ” item in the sidebar.
○ System displays statistics data of the User System.
● Admin can view the statistics data with the following information:
148
○ 4 statistics cards about:
■ Number of currently online users in the User System: number
■ Number of the current users finding call: number.
■ Number of the current users in the call: number.
■ The average rating: number.
○ 8 Chart about:
■ Số cuộc gọi
■ Số cuộc gọi/người dùng
■ Thời lượng cuộc gọi
■ Thời lượng cuộc gọi/người dùng
■ Thời lượng trung bình mỗi cuộc gọi
■ Tỉ lệ hủy hàng chờ
■ Thông số hàng chờ
■ Thông số thời lượng chờ
○ Top 20 constructive questions is used most:
■ #: number.
■ Tiêu đề: text.
■ Số câu trả lời: number.
■ Lượt hỏi: number.
■ Trạng thái: text.
■ Xem chi tiết câu trả lời: button.
○ Top rating keywords are used most:
■ Keyword: text.
■ Lượt đánh giá: number.
● System gets statistics data:
○ Success: system displays statistics data on the screen.
○ Fail: system shows the error message based on the Admin’s action.
● Business rules:
○ Admin can filter the statistics data on the chart by: week, month, half year,
year and total
○ Rating keywords are default sorted by descending based on the number of
reviews.
149
4. Non-Functional Requirements
4.1 External Interfaces
4.1.1 User interface
● User interface must be user-friendly.
● User interface must be responsive in order to fit on multiple device screen from desktop to
mobile
● Fonts, and colors must follow a theme structure and have meaning
● Icons should be included to present the meaning of action
4.2.2 Flexibility
● User web application must be able to run on different devices
● Easy to access, and serve marketing, product trial without needing to download
4.2.3 Security
● Important input data are validated before saving to the database.
● User only able to access resources when having suitable permission, and role.
● WebSocket/HTTP requests must be authenticated and authorized when accessing private
resources.
150
IV. Software Design Description
1. System Design
1.1 System Architecture
1.1.1 Overall System Architecture
151
1.1.2 Detail System Architecture
152
1.2 Component Diagram
153
1.3 Package Diagram
1.3.1 Front-end Package Diagram
No Package Description
154
The package contains classes that provide common
5 Utils
methods for application usage.
The package provides classes that are in charge of sending
6 Services
HTTP requests and receiving server responses.
Table 21: Front-end Package Diagram .
155
1.3.2 Back-end Package Diagram
No Package Description
156
each smaller package
Table 22: Back-end Package Diagram .
157
2. Database Design
2.1 Collections Relationship
158
The above database diagram is the physical data layer of the Destinee system. We have changed
many parts from the ERD in the logical layer:
● In order to increase performance, we reduce join between collections.
● Most will not use tables with a one-to-one relationship. Instead, since MongoDB supports
embedded documents, it's easy to see that's heavily leveraged here. Specifically collection
profiles, callHistories, and callQuestions
For read optimization, this also leads to duplicate data, but this is what we expected
Specifically, the statistics collection is used to store the account's statistics for each day. If the
requirement is to get the overall statistics of the profile, we can get all the record statistics of that
profile and then sum or group it together
Here, since this request happens frequently, which is costly in performance, we have put a collection
statistics inside the profiles collection which contains overall statistics to make reading faster.
2.2 Data Dictionary
2.2.1 Collection accounts
Field Name Type Description Unique Not Null PK/FK
_id objectId X X PK
uid string id generated from firebase X X
authentication
email string X X
role string Is a data fields with 2 enum X
values:
● ADMIN
● USER
profile objectId FK
upgrade object
upgrade.package string X
upgrade.expiresDate date X
disabled bool If the value of disable field X
is true then the user will
not be able to login or
perform any function with
the system
createdAt date X X
updatedAt date X X
Table 23: Data Dictionary - Collection accounts.
159
● MIDDLE_VIETNAM
● SOUTH_VIETNAM
● HA_NOI
● HO_CHI_MINH
● CAN_THO
● KIEN_GIANG
● TIEN_GIANG
● BAC_NINH
● QUANG_NGAI
birthdate string
gender bool
sex string Is a data fields with 3
enum values:
● STRAIGHT
● TOP
● BOT
avatar objectId FK
job string Is a data fields with 3
enum values:
● STUDENT
● WORKER
● SUPPORTER
workAt string
major string
height int
languages string[] Is a data fields with list of
one of 5 enum values:
● VIETNAMESE
● ENGLISH
● FRENCH
● GERMAN
● JAPANESE
hobbies string[]
isFinished bool the value of isFinished is
used to check if the user
has completed the
registration process or not.
If isFinished is true then
the user has completed
the registration
createdAt date X X
updatedAt date X X
Table 24: Data Dictionary - Collection registrators.
160
answers.title string X
answers.selectedCou int Number of times selected X
nt for that answer
viewCount int Number of times the X
question was viewed
disabled bool If the value of disable field X
is true, the question will
not be used in the User
System
createdAt date X X
updatedAt date X X
Table 25: Data Dictionary - Collection callQuestions.
161
notification has been
detailed by the user
isArchived bool The status of the message X
indicates whether the
message has been viewed
by the user
type string Is a data fields with 4 X
enum values:
● DIRECT_MESSAGE
● FRIEND_REQUEST
● FRIEND_REQUEST_A
CCEPTED
● ANONYMOUS_MESS
AGE
data object Data of notification
data.id objectId
data.profile objectId FK
data.profileName string
data.content string
createdAt date X X
updatedAt date X X
Table 27: Data Dictionary - Collection notifications.
162
callerTwo.queueTim int X
e
callerTwo.filter object X
filter.gender bool X
filter.origin string
filter.ageRange int[] X
filter.topic string
filter.language string
filter.sex string
participants objectId[] X
questions array Constructive questions of
the call history
questions.question objectId X FK
questions.title string X
questions.answers array X
questions.answers.a objectId X FK
nswer
questions.answers.ti string X
tle
questions.callerOne objectId
AnswerId
questions.callerTwo objectId
AnswerId
matchingPercentage int The compatibility of 2
users after completing
the construction
questions
length int Length of the call history
endReason array
endReason.ender objectId X FK
endReason.reason string Is a data fields with 3 X
enum values:
● NORMAL_END
● NO_CONNECTION
● STOP_FINDING
accessAllowedPartici objectId[]
pants
createdAt date X X
updatedAt date X X
Table 28: Data Dictionary - Collection callHistories.
163
● DENIED
● CANCELED
participants objectId[] X
createdAt date X X
updatedAt date X X
Table 29: Data Dictionary - Collection friendRequests.
164
updatedAt date X X
Table 31: Data Dictionary - Collection images.
165
avatar objectId FK
personalInfo object X
personalInfo.origin string X
personalInfo.birthda date X
te
personalInfo.gender bool X
personalInfo.sex string X
personalInfo.job string
personalInfo.workAt string
personalInfo.major string
personalInfo.height int
personalInfo.langua string[]
pes
personalInfo.hobbie string[]
s
personalInfo.favorit array
eSongs
favoriteSongs.id int X
favoriteSongs.path string X
favoriteSongs.title string X
favoriteSongs.artist string
favoriteSongs.thum string
bnailPath
favoriteSongs.releas string
eDate
personalInfo.favorit array
eMovies
favoriteMovies.id string X
favoriteMovies.title string X
favoriteMovies.origi string X
nalTitle
favoriteMovies.back string
dropPath
favoriteMovies.post string
erPath
favoriteMovies.rele string
aseDate
profilePageSetting object Object is used to define X
what users want to display
on their profile
profilePageSetting string X
.displayName
profilePageSetting bool X
.age
profilePageSetting bool X
.height
profilePageSetting bool X
.origin
profilePageSetting bool X
.jobStatus
166
profilePageSetting bool X
.languages
profilePageSetting bool X
.hobbies
profilePageSetting bool X
.sex
profilePageSetting string
.bio
callSetting object Object is used to define X
what users want to display
to another user when
calling
callSetting.displayN string X
ame
callSetting.age bool X
callSetting.height bool X
callSetting.origin bool X
callSetting.jobStatus bool X
callSetting.language bool X
s
callSetting.hobbies bool X
callSetting.sex bool X
mbtiResult object
mbtiResult.type string X
mbtiResult.category string
mbtiTests objectId[] X FK
friends objectId[] Friend Id of the profile X FK
posts objectId[] Post Id of the profile X FK
statistics object Statistics data of profile X
statistics.callCount int X
statistics.callDuratio int X
n
statistics.succeeded int X
CallCount
statistics.meanCallD int X
uration
statistics.queueCou int X
nt
statistics.meanQueu int X
eDuration
statistics.succeeded int X
QueueCount
statistics.meanSucc int X
eededQueueDuratio
n
statistics.droppedQ int X
ueueCount
statistics.meanDrop int X
pedQueueDuration
167
statistics.droppedQ int X
ueueRatio
statistics.ratedRatio int Ratio rated of after calling X
in 1 day of profile
statistics.ratedCoun int Percentage of users who X
t rated the call each time
the call ended in 1 day
statistics.ratingRatio int Rate at which users rate X
the call each time it ends
in 1 day
statistics.ratingCoun int Number of call reviews in X
t 1 day of profile
statistics.keywordsR object X
eviewed
keywordsReviewed string keywords that users are X
.keyword rated by other users in 1
day
keywordsReviewed int Number of times users are X
.count rated by keywords
Statistics.keywordsR object X
eviewing
keywordsReviewing. string X
keyword
keywordsReviewing. int X
count
disable bool X
registrationTokens array Registration Tokens X
registrationTokens string Token issued by firebase X
.token
registrationTokens date X
s.initializeAt
createdAt date X X
updatedAt date X X
Table 35: Data Dictionary - Collection profiles.
168
createdAt date X X
updatedAt date X X
Table 36: Data Dictionary - Collection orders.
169
3. Detailed Design
3.1 User find call
Below will contain activity diagrams, sequence diagrams, and class diagrams that describe the call
flow. Call flow contains two main features: the user joins the queue then waits for the call match, set
up the call, and connects two participants
170
Figure 17: User find call - Class Diagram.
171
11 startFinding Promise<SocketCall Public
FindingRESP>
12 stopFinding void Public
13 requestQuestionaire void Public
14 rejectQuestionaire void Public
15 submitAnswer void Public
16 endCall void Public
17 peering void Public
18 joinLastQueue void Public
172
1 gender boolean Public
2 origin REGION | null Public
3 sex SEX | null Public
4 language LANGUAGE | null Public
5 topic TOPIC | null Public
6 ageRange [number, number] Public
173
3 femaleQueueTrend QueueTrend Private
4 configService ConfigService Private
5 profileService ProfileService Private
6 imageService ImageService Private
7 callQueueService CallQueueService Private
8 redis Redis Private
174
4 createdTime number Public
175
2 profileService ProfileService Private
3 accountService AccountService Private
4 statisticsService StatisticsService Private
5 callQuestionService CallQuestionService Private
6 imageService ImageService Private
7 configService ConfigService Private
8 callHistoryRepository CallHistoryReposito Private
ry
9 callQuestionRepository CallQuestionReposi Private
tory
10 friendRequestReposito FriendRequestRepo Private
ry sitory
11 conversationRepositor ConversationReposi Private
y tory
176
4 registratorService RegistratorService Private
5 callHistoryService CallHistoryService Private
6 redis Redis Private
3.1.2.13 PACKAGE
No Enum Visibility Description
1 PREMIUM Public
177
No Method Return Type Visibility Description
178
Figure 18: User Join Queue - Sequence Diagram.
This sequence diagram describes how the system pick user from queue and match them with
potential user
179
Figure 19: Find and match user in queue - Sequence Diagram.
180
3.2 User send message
Below will contain activity diagrams, sequence diagrams, and class diagrams that describe the send
message flow.
181
Figure 21: User send message - Class Diagram.
182
9 accountService AccountService Private
183
No Method Return Type Visibility Description
184
6 username string Private
7 avatar ObjectId Private
8 personalInfo PersonalInfo Private
9 callSetting CallSetting Private
10 mbtiResult ProfileMbtiResult Private
11 mbtiTests MbtiTest[] Private
12 friends Profile[] Private
13 posts Post[] Private
14 statistics ProfileStatistics Private
15 disabled boolean Private
16 registrationTokens RegistrationToken[] Private
3.2.2.11 NOTIFICATION_TYPE
No Enum Visibility Description
1 DIRECT_MESSAGE Public
2 ANONYMOUS_MESSAGE Public
3 FRIEND_REQUEST Public
4 FRIEND_REQUEST_ACCEPTED Public
185
3.2.2.12 AccountRepository Class
No Attribute Data Type Visibility Description
1 accountModel Account Private
186
3.2.2.16 ROLE
No Enum Visibility Description
1 ADMIN Public
2 USER Public
3.1.13. PACKAGE
No Enum Visibility Description
1 PREMIUM Public
187
Figure 22: Authenticate - Sequence Diagram.
This sequence diagram describes how the message is sent and notified to another user
188
Figure 23: Message is sent and notified to another user - Sequence Diagram.
189
Figure 24: User order and pay premium package - Activity Diagram.
190
Figure 25: User order and pay premium package - Class Diagram..
191
1 accountService AccountService Private
2 accountRepository AccountRepository Private
3 profileRepository ProfileRepository Private
4 orderRepository OrderRepository Private
5 paymentService PaymentService Private
6 paymentRepository PaymentRepository Private
3.3.2.6 ORDER_STATUS
No Attribute Visibility Description
1 ON_PROGRESS Public
2 SUCCEEDED Public
3 CANCELED Public
192
6 VNP_EXPIRES_IN number Private
7 ENV string Private
8 paymentRepository PaymentRepository Private
9 orderRepository OrderRepository Private
10 orderService OrderService Private
193
3.3.2.10 PAYMENT_STATUS
No Attribute Visibility Description
1 ON_PROGRESS Public
2 SUCCEEDED Public
3 FAILED Public
194
No Method Return Type Visibility Description
195
3.3.2.17 PACKAGE
No Attribute Visibility Description
1 PREMIUM Public
3.3.2.19 ROLE
No Attribute Visibility Description
1 ADMIN Public
2 USER Public
3.3.3 Sequence Diagram
Below describes how the web API authenticate every request that accesses the private resource, and
send a message is one of the actions that required authenticate
196
Figure 26: Authenticate request to accesses the private resource- Sequence Diagram.
Sequence diagram describes how the web API system handle when a user sends a message
197
Figure 27: Buy Premium Package - Sequence Diagram.
198
3.3.4 State Machine Diagram
199
This state machine diagram describes payment state
4. Algorithm
4.1 Find best potentian match for participant in queue
4.1.1 Summary
This algorithm will explain how the system chooses the best match among queue participants
Input: A list of participants in the queue. For each participant, include that person's information:
gender, birthdate, sex, origin, and language. And information about the criteria this participant is
looking for: gender, age range, topic, location, sex, language
There are many users who are online and looking for calls. Each queue participant will specify who
they want to talk to. The system must select people in the queue so that both people match as many
criteria as possible. Then the system will connect this user together to call
200
4.1.3 Solution
The diagram below shows the way the algorithm runs when the user enters the queue.
There are 6 main steps in this algorithm:
201
202
Matching criteria:
The below table show the matching fields and the weight of each field (can be configured).
All weights listed and used in the system are not referenced to any source or article. These weights
are set based on observations, feelings & subjective opinions about user needs. The weights are
ordered from most important to least important
Note that every field is optional excluding gender and age range is required. When the participant
leaves an optional field blank it will meant to be match every options
Gender 100
Topic 20
Location 20
Sex 10
Mark Threshold 280 If the total mark is not equal or greater threshold
then that participant fails to qualified
The output:
After running algorithm, from the input with participant list, we get the best match participant.
4.1.4 Performance
Test Environment
203
We will use only one criteria throughout the process
Output:
204
Min: 0.306ms | Max: 6.791ms | Ave: 1.199ms
205
Min: 16.365ms | Max: 30.533ms | Ave: 19.4929ms
206
Output: User personality type (MBTI Type)
User want to match with another participant that is matched with themself not only from criteria but
also the personality. In order to enhance the compatibility when matching two participants in the
queue, we must use personality compatibility helper
4.1.3 Solution
Because MBTI is a trademark it’s very hard to know how to algorithm works. But the foundation of
MBTI is Myers–Briggs Type Indicator which every big MBTI test site use to build its own test suite
Here, we use an open-source MBTI alike call Open Extended Jungian Type Scales version 1.2 refer
here https://openpsychometrics.org/tests/OJTS/development/
207
2. Test Plan
2.1 Test Stages
Stage of Test
Type of Test
Integration System Acceptance
Functional Test X X X
Non-functional test X X X
User interface test X X
Data integrity test X X
Table 39: Test Plan - Test Stages.
208
VI. Release Package & User Guides
1. Deliverable Package
1.1 Source codes & documents
No. Items Sub-Items Type Version
Code Package
Database
Documents
2. Installation Guides
2.1 System Requirements
2.1.1 Hardware Requirements
This is a hardware requirement in order for the web API to execute
209
Chrome 23 Chrome 108 or latest
Edge 79 Edge 107 or latest
Desktop Browser
Safari 11 Safari 16 or latest
Firefox 22 Firefox 107 or latest
Chrome 107 Chrome 107 or latest
Mobile Browser Safari 11 Safari 16.1 or latest
Firefox 106 Firefox 106 or latest
Table 45: System Requirements - Software Requirements.
210
● Register TMDB API (for movie data): Link
211
● VNP_EXPIRES_IN: <expires_in_minutes>
Step 4: Install all dependencies: npm install or npm install --legacy-peer-deps
Step 5: Run npm start then your browser will open and redirect to localhost:<your-port>
212
● REACT_APP_FIREBASE_API_KEY: <provided_by_firebase>
● REACT_APP_FIREBASE_AUTH_DOMAIN: <provided_by_firebase>
● REACT_APP_FIREBASE_PROJECT_ID: <provided_by_firebase>
● REACT_APP_FIREBASE_STORAGE_BUCKET: <provided_by_firebase>
● REACT_APP_FIREBASE_MESSAGING_SENDER_ID: <provided_by_firebase>
● REACT_APP_FIREBASE_APP_ID: <provided_by_firebase>
● REACT_APP_FIREBASE_MEASUREMENT_ID: <provided_by_firebase>
● REACT_APP_FIREBASE_VAPID_KEY: <provided_by_firebase>
● REACT_APP_API_URL: <web_api_url>
● REACT_APP_CALL_QUESTION_ANSWER_MIN: <number>
● REACT_APP_CALL_QUESTION_ANSWER_MAX: <number>
Step 3: Install all dependencies: npm install or npm install --legacy-peer-deps
Step 4: Run npm start then your browser will open and redirect to localhost:<your-port>
Step 1: Create VPS from any provider with the below requirements:
Step 3.1: Create folder & files as the following structure exclude “prod-decrypt.sh” and
“prod-docker-push.yml”
213
Step 3.1: Create “decrypt.sh” file
214
Step 4.1: Go to DockerHub then Create new “Access Token” at
https://hub.docker.com/settings/security
𝅉 DOCKER_HUB_ACCESS_TOKEN
𝅉 DOCKER_HUB_REPO_NAME
𝅉 DOCKER_HUB_USERNAME
𝅉 LARGE_SECRET_PASSPHRASE
𝅉 PROD_DOCKER_HUB_ACCESS_TOKEN
𝅉 PROD_DOCKER_HUB_REPO_NAME
𝅉 PROD_DOCKER_HUB_USERNAME
𝅉 PROD_LARGE_SECRET_PASSPHRASE
𝅉 PROD_UPDATE_SCRIPT
𝅉 PROD_VPS_HOST
𝅉 PROD_VPS_PASSWORD
𝅉 PROD_VPS_PORT
𝅉 PROD_VPS_USERNAME
𝅉 UPDATE_SCRIPT
𝅉 VPS_HOST
𝅉 VPS_PASSWORD
𝅉 VPS_PORT
𝅉 VPS_USERNAME
215
Step 6.3: Create “dependencies.docker-compose”
216
Step 6.5: Create “update-server.sh”
217
Step 7: Install dependencies & run server
Step 8: Access your host: (ex: https://128.199.161.229) and you see “Xin chào đã đến với Destinee
Server...” then you’re complete successfully
218
Step 9: Push commit that contains Github Action CI/CD setup then check if Build process is working
good here: https://github.com/jungtin/destinee-server/actions
Step 1: Login Netlify using Github and import project here Import an existing project from a Git
repository | Netlify
Step 2: Pick and import from github repo then deploy site
Step 3: Configuration
219
Step 3.3: Setup environment variables here
https://app.netlify.com/sites/your-repo/settings/deploys#environment
220
Default, Netlify will generate an unique domain for you. But if you want to link your custom domain
to Netlify then setup here: https://app.netlify.com/sites/destinee-dev/settings/domain
Step 5: Access to your domain/custom domain you will see the result after minutes
221
3. User Manual
3.1 Admin System
3.1.1 View Statistics Data
Step 1: In dashboard home page, the sidebar has so many tabs, and in the middle is the statistic
information
Step 2: At this point, the Admin has many options to choose from to see what kind of statistics data.
Statistical data can also be customized to display by week, month, half year, last 1 year or all.
Step 3: Admin can also see the details of the most used constructive questions in the system.
222
Figure 30: User Manual - Feature 1 - Step 3
Step 2: Admin must fill in all required information like: question title, 2 answers. And if user want to
add more answer, he/she can also click on “+ Câu trả lời” button and fill in answer. After that, admin
press “Gửi” button to save.
223
Figure 32: User Manual - Feature 2 - Step 2
Step 3: At this time, the newly created constructive question will be updated to the question list and
used in the User System.
224
Figure 34: User Manual - Feature 3 - Step 1
Step 2: There are six fields filter: Giới tính, quê quán, độ tuổi, chủ đề, ngôn ngữ, xu hướng. Member
can choose the field to change the criteria or not. Then, member click to “Bắt đầu gọi ngay” button.
225
Figure 35: User Manual - Feature 3 - Step 2
Step 3: After successfully setup queue filters, member will be redirected to the “Call Finding” page.
System starts a finding call process based on the selected criteria.
226
Figure 36: User Manual - Feature 3 - Step 3
Step 4: After successfully matched with another member by the system, member will be redirected
to the “Call Anonymous Reveal” page and can see which one from 3 random users is the one who
matched with them by the system by clicking on 3 images.
227
Figure 37: User Manual - Feature 3 - Step 4
Step 5: After 5 seconds on the call reveals page, the member will be redirected to the “Calling
Screen”. Member can start talking with another user in the call.
228
Figure 38: User Manual - Feature 3 - Step 5
Step 6: Member can view another user’s profile in the call by clicking on the card of the other profile
in the call.
229
Figure 39: User Manual - Feature 3 - Step 6
Step 7: Member can join call constructive questions process by clicking on the “Bắt đầu trò chơi kiến
tạo tại đây” area.
230
Figure 40: User Manual - Feature 3 - Step 7
Step 8: After both 2 users complete the answering process, the system will display the result.
Member can view the matching percent of 2 users and the answers of 2 users.
231
Figure 41: User Manual - Feature 3 - Step 8.
Step 9: Member can end the current call by clicking the “End Call” icon on the “Calling Screen” and
start rate another user in the current call after end the call.
232
Figure 42: User Manual - Feature 3 - Step 9
3.2.2 Chat
Step 1: After a call, Premium member can view the history of the call. Then clicks “Nhắn tin” button
to continue contact to the person in the call history item by chatting.
233
Figure 43: User Manual - Feature 4 - Step 1.
Step 2: Premium member will be redirected to the “Direct Message” page. They can send messages
to another user in the conversation after input the message and clicking send button.
234
Figure 44: User Manual - Feature 4 - Step 2
Step 3: Premium member can view the other member’s message after he/she send message
successfully.
235
Figure 45: User Manual - Feature 4 - Step 3
236