0% found this document useful (0 votes)
109 views177 pages

Report7 Final Project Report

This document provides an overview of a capstone project to develop a freelance services marketplace called FSM. It includes sections on project introduction, management plan, software requirements specification, and software design description. The project aims to create a platform that allows freelancers to offer their services and clients to hire freelancers. Key features for users, sellers, buyers and administrators are outlined. The project scope, objectives, risks, schedule and roles are defined in the management plan. User stories, use cases, and functional requirements are specified. The system architecture, package diagram, class diagrams and sequence diagrams are presented in the design description.

Uploaded by

Satan Hi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
109 views177 pages

Report7 Final Project Report

This document provides an overview of a capstone project to develop a freelance services marketplace called FSM. It includes sections on project introduction, management plan, software requirements specification, and software design description. The project aims to create a platform that allows freelancers to offer their services and clients to hire freelancers. Key features for users, sellers, buyers and administrators are outlined. The project scope, objectives, risks, schedule and roles are defined in the management plan. User stories, use cases, and functional requirements are specified. The system architecture, package diagram, class diagrams and sequence diagrams are presented in the design description.

Uploaded by

Satan Hi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 177

MINISTRY OF EDUCATION AND TRAINING

FPT UNIVERSITY

Capstone Project Document


Freelance Services Marketplace

SWP490_G11
Nguyen The Vinh – Leader – SE05720
Le Thanh Tung – Technical leader - HE141097
Group Members Vo Duc Tai - Member - HE141458
Tran Xuan Son – Member - HE140780
Doan Minh Duc – Member - HE141516
Supervisor Tran Thu Thuy - ThuyTT108
Ext Supervisor None
Capstone Project
FSM
code
- Hanoi, August/2022 -

Table of Contents
Acknowledgement 12
Definition and Acronyms 12
I. Project Introduction 13
1. Overview 13
1.1. Project Information 13
1.2. Project Team 13
2. Product Background 13
3. Existing Systems 14
3.1. Vlance 14
3.2. Fiver 15
4. Business Opportunity 15
5. Software Product Vision 16
6. Project Scope & Limitations 16
6.1. Major Features 16
6.1.1. For Admin 16
6.1.2. For Guest 17
6.1.3. For Buyer 17
6.1.4. For Seller 18
6.2. Limitations & Exclusions 18
6.2.1 Limitations 18
II. Project Management Plan 18
1. Overview 18
1.1. WBS & Estimation 18
1.2. Project Objectives 22
1.2.1. Timelines 22
1.2.2. Allocated Effort 22
1.3. Project Risks 23
2. Management Approach 24
2.1. Project Process 24
2.2. Quality Management 24
2.3. Training Plan 24
3. Master Schedule 25
4. Project Organization 26
4.1 Team & Structure 26
4.2. Role & Responsibility 26
5. Project Communications 27
6. Configuration Management 27
6.1. Document Management 27
6.2. Source Code Management 27
6.3. Tools & Infrastructures 27
III. Software Requirement Specification 28
1. Overall Description 28
2. User Requirements 29
2.1. Actors 29
2.2. Use Cases 29
2.2.1. Diagram(s) 29
2.2.1.1. Use Cases diagram for Guest 29
2.2.1.2. Use Cases diagram for Buyer 30
2.2.1.3. Use Cases diagram for Seller 31
2.2.1.4. Use Cases diagram for Administrator 32
2.2.2. Use Case Descriptions 33
3. Functional Requirements 43
3.1. System Functional Overview 43
3.1.1. Screens Flow 43
3.1.1.1. Screens Flow For Guest 43
3.1.1.2. Screens Flow For Buyer 44
3.1.1.3. Screens Flow For Seller 44
3.1.1.4. Screens Flow For Administrator 45
3.1.2. Screen Descriptions 45
3.1.3. Screen Authorization 47
3.1.4. Entity Relationship Diagram 50
3.2. Common feature 51
3.2.1. Home page for Guest 51
3.2.2. Home page for Buyer 53
3.2.3. Home page for Seller 54
3.2.4. Home page for Admin 55
3.2.5. Search service 55
3.3. User authentication Feature 57
3.3.1. Register 57
3.3.2. Login 57
3.4. User profile management feature 58
3.4.1. User Profile 58
3.4.2. Change password 59
3.4.3. Forgot password 59
3.5. Seller profile management feature 60
3.5.1. View Seller profile 60
3.5.2. Professional information 61
3.6. Service management feature 61
3.6.1. View list service 61
3.6.2. View detail service 63
3.6.2. Create service 64
3.7. Request management feature 64
3.7.1. View list request 64
3.7.2. View detail request 65
3.7.3. Create request 66
3.7. Offer management feature 67
3.7.1. View list offer 67
3.7.2. View detail offer 67
3.7.3. Create offer 68
3.8. Order management feature 69
3.8.1. View list order 69
3.8.2. View detail order 70
3.8.3. Create order 70
3.9. Contract management feature 71
3.9.1. View list contract 71
3.9.1. View detail contract 71
3.10 .Service rating feature 72
3.10.1. Star Rating and Review 72
3.11. Payment Management feature 73
3.11.1. Top up 73
3.11.2. Payment 74
3.11.3. View list transaction 74
3.12 User management feature 75
3.12.1. View list user 75
3.14. Category management feature 75
3.14.1. View list category 75
3.14.2. Create new category 76
4.1. External Interfaces 76
4.1.1. User Interfaces 76
4.1.2. Software Interfaces 77
4.1.3. Hardware Interfaces 77
4.2. Quality Attributes 77
4.2.1. Usability 77
4.2.2. Reliability 77
4.2.3. Performance 77
4.2.4. Security 77
5. Requirement Appendix 77
5.1. Business Rules 77
5.2. Application Messages List 78
IV. Software Design Description 80
1. Overall Description 80
1.1. Assumptions 80
1.2. Design Constraints 80
2. System Architecture Design 81
2.1. Overall Architecture 81
2.2. System Architecture 82
2.2.1 Client 82
2.2.2. Server 83
2.3. Package Diagram 84
3. System Detailed Design 85
3.1. Function related to Authentication 85
3.1.1. Class Diagram 85
3.1.2. Sequence Diagram(s) 85
3.1.2.1 Login 85
3.2. Function related to User 86
3.2.1. Class Diagram 86
3.2.2. Sequence Diagram(s) 86
3.2.2.1. View list User 86
3.2.2.2. Ban User 86
3.2.2.3. Unban User 86
3.2.2.4. Change password 87
3.2.2.5. Reset password 87
3.3. Function related to Service 88
3.3.1. Class Diagram 88
3.3.2. Sequence Diagram(s) 88
3.3.2.1. View list ofBboxservice 88
3.3.2.2.Create Boxservice 89
3.3.2.3. Update Boxservice 89
3.3.2.4. Delete Boxservice 89
3.4. Function related to Request 90
3.4.1. Class Diagram 90
3.4.2. Sequence Diagram(s) 90
3.4.2.1. Create request 90
3.4.2.2. Update request 91
3.5. Function related to Offer 91
3.5.1. Class Diagram 91
3.5.2. Sequence Diagram(s) 92
3.5.2.1. Create offer 92
3.6. Function related to Contract 92
3.6.1. Class Diagram 92
3.6.2. Sequence Diagram(s) 93
3.7.2.1. View detail contract 93
3.7.2.2. Upload delivery 93
3.8 Function related to Admin 94
3.8.1. Class Diagram 94
3.8.2. Sequence Diagram(s) 95
3.8.2.1. Update admin 95
3.8.2.2. Delete admin 95
4. Class Specification 95
4.1. Controller 95
4.1.1.AdminController 95
4.1.2. AuthController 96
4.1.3. BoxController 96
4.1.4. CatergoryController 97
4.1.5. CommentController 97
4.1.6. ContractController 97
4.1.7. FileController 98
4.1.8. PackageController 98
4.1.9. PostRequestController 99
4.1.10. SellerController 99
4.1.11. SellerDetailsInfoController 100
4.1.12. SkillController 100
4.1.13. SubCategoryController 101
4.1.14. UserController 101
4.2. Repository 101
4.2.1. ActivityTypeRepository 101
4.2.2. TransactionRepository 101
4.2.3. WalletRepository 102
4.2.4. AdminRepository 102
4.2.5. BoxRepository 102
4.2.6. BuyerRepository 102
4.2.7. CategoryRepository 102
4.2.8. CommentRepository 102
4.2.9. ContractRepository 103
4.2.10. DeliveryRepository 103
4.2.11. HistoryBoxRepository 103
4.2.12. MilestoneContractRepository 103
4.2.13. NotificationRepository 103
4.2.14. OfferRequestRepository 103
4.2.15. PackageRepository 103
4.2.16. PostRequestRepository 104
4.2.17. RatingRepository 104
4.2.18. SellerRepository 104
4.2.19. SkillMetaDataRepository 104
4.2.20. SkillRepository 104
4.2.21. SubCategoryRepository 104
4.2.22. UserRepository 104
4.3. Service 105
4.3.1. ActivityTypeService 105
4.3.2. AdminService 105
4.3.3. BoxService 105
4.3.4. CategoryService 106
4.3.5. CertificateService 106
4.3.6. CommentService 106
4.3.7. ContractService 106
4.3.8. CustomUserDetailsService 107
4.3.9. DelivertService 107
4.3.10. EducationService 107
4.3.11. ExtraOfferService 107
4.3.12. GalleryService 107
4.3.13. LanguageService 108
4.3.14. MilestoneService 108
4.3.15. NotificationService 108
4.3.16. OfferRequestService 108
4.3.17. PackageService 108
4.3.18. PostRequestService 108
4.3.19. RatingService 109
4.3.20. SellerService 109
4.3.21. SkillMetaDataService 109
4.3.22. SkillService 109
4.3.23. SubCategoryService 109
4.3.24. TransactionService 109
4.3.25. UrlProfileService 110
4.3.26. UserService 110
4.3.27. WalletService 110
5. Data & Database Design 111
5.1. Database Design 111
V. Software Testing Documentation 113
1. Scope of Testing 113
1.1. Functional requirement 113
1.2. Non-Functional requirement 114
1.3. Test Stage 114
1.4. Acceptance Criteria 115
2. Test Strategy 115
2.1 Testing Types 115
2.1.1 Unit Testing 115
2.1.2. Integration Testing 115
2.1.3. Functional Testing 115
2.1.4. User Interface Testing 116
2.2. Test Levels 116
2.3. Supporting Tools 117
3. Test Plan 117
3.1 Human Resources 117
3.2 Test Environment 117
3.3 Test Milestones 117
4. Test Cases 118
4.1. Unit test 118
4.2. Integration test 119
4.3. System test 119
5. Test Reports 120
5.1. Unit test report 120
5.2. Integration test report 120
5.3. System test report 121
5.4. Defect Logs 121
VI. Release Package & User Guides 121
1. Deliverable Package 121
2. Installation Guides 121
2.1 System Requirements 121
2.2 Installation Instruction 122
3. User Manual 124
3.1 Overview 124
3.2 User authentication 124
3.2.1. Register <Role: Guest> 124
3.2.2. Login <Role: Guest> 126
3.2.3. Forgot password <Role: Buyer/Seller> 126
3.2.4. Logout <Role: Buyer/Seller> 128
3.3 User profile management 128
3.3.1.View and Update user profile <Role: Buyer/Seller> 128
3.3.2. Change password <Role: Buyer/Seller> 130
3.4 User Type Management 131
3.4.1. Become Seller <Role: Buyer> 131
3.4.2. Switch to Buyer 133
3.4.3. Switch to Seller 133
3.5 Service management 134
3.5.1. View service <Role: Guest/Buyer> 134
3.5.2. Search service <Role: Guest/Buyer> 136
137
3.5.3. Create service <Role: Seller> 137
3.5.4. View detail Service <Role: Seller> 142
3.5.5. Update service status <Role: Seller> 143
3.5.6. Update service status <Role: Seller> 143
3.5.7. Update service <Role: Seller> 144
3.5.8. Delete service <Role: Seller> 145
3.6 Request management 145
3.6.1. Create request <Role: Buyer > 145
3.6.2. View request <Role: Seller > 148
3.6.3. Apply request <Role: Seller > 150
3.6 Offer management 151
3.6.1. Create offer <Role: Seller > 151
3.6.1. View offer <Role: Buyer > 152
3.7 Order management 153
3.7.1. Create order <Role: Buyer > 153
3.7.2. View order <Role: Buyer > 154
3.7.3. View order <Role: Seller > 156
3.7.4. Accept order <Role: Seller > 157
3.7.5. Reject order <Role: Seller > 157
3.8 Contract management 158
3.8.1. View list contract <Role: Buyer > 158
159
159
3.8.2. Comment contract <Role: Buyer > 160
3.8.3. Extra offer contract <Role: Buyer > 160
3.8.4. Cancel Extra offer contract <Role: Buyer > 161
3.8.5. Accept Extra offer contract <Role: Seller > 162
3.8.6. Upload delivery <Role: Seller > 162
3.8.7. Confirm delivery <Role: Buyer > 163
3.8.8. Report contrac <Role: Seller> 164
3.9 Wallet management 164
3.9.1. View wallet <Role: Buyer/Seller> 164
3.9.2. Top up wallet <Role: Buyer/Seller> 166
3.10. Homepage admin management <Role: Admin> 167
3.10. User management <Role: Admin> 168
3.10.1. View list user <Role: Admin> 168
3.10.2. View detail user <Role: Admin> 169
3.10.3. Ban user <Role: Admin> 170
3.10.4. Ban user <Role: Admin> 170
3.10.5. View list admin<Role: Admin> 171
3.10.5. View detail admin<Role: Admin> 172
3.10.6. Delete admin<Role:Admin> 173
3.11. Category management <Role: Admin> 173
3.11.1 View list category 173
3.11.2. Create new category 174
3.11.3 View list subcategory<Role:Admin> 175
3.11.4. Create new a subcategory<Role:Admin> 176
Acknowledgement
Dear

- FPT University - Hanoi campus

- Lecturers in FPT University - Hanoi campus

- Mrs. Tran Thu Thuy

First words, the SWP490-G11 team would like to send greetings and best wishes for health to the
school's management board and all lecturers of FPT University Hanoi.

After meeting the necessary conditions and being approved by FPT University, we established the
SWP490-G11 project team. The idea of the project is to connect freelancers with people who need to
hire a specific employment service. The project is named Freelance Services Marketplace - FSM, true
to its meaning.

Although the total project implementation time is not much, only 4 months, with the maximum
facilitation from FPT University, the efforts of all members, and especially the dedicated guidance of
Mrs. Tran Thu Thuy, the team completed the project well.

In this report, the team will provide detailed information on the plan, implementation, project
results, and instructions on how to use the solution of the Freelance Services Marketplace project.
The team hopes that this project will reflect the capacity, working experience, and efforts of all
project members. Nothing is perfect, so errors or limitations may still exist in this project, the team
would like to listen to and acknowledge all evaluations and suggestions from the lecturers with an
open mind best. The team will try to upgrade and improve this project in the future.

Once again, the SWP490-G11 team would like to thank FPT University for creating all favorable
conditions for the team to carry out this project. And especially thanks to Mrs. Tran Thu Thuy for
guiding and helping the group during the past time.

Sincerely,

SWP490-G11 Team

Definition and Acronyms


Acronym Definition

FSM Freelance Services Marketplace

AWS Amazon Web Services

BA Business Analysis

BR Business Rule

ERD Entity Relationship Diagram

GUI Graphical User Interface

PM Project Manager
SDD Software Design Description

SPMP Software Project Management Plan

SRS Software Requirement Specification

UC Use Case

API Application Program Interface

TC Test case

UT Unit test

BR Business analysis

I. Project Introduction
1. Overview
1.1. Project Information
● Project name: Freelance Services Marketplace
● Project code: FSM
● Group name: SWP490-G11
● Software type: Website

1.2. Project Team

Full Name Role Email Mobile

Tran Thu Thuy Lecturer [email protected] 0904380878

Nguyen The Vinh Leader [email protected] 0973597230

Le Thanh Tung Technical Leader [email protected] 0976808174

Vo Duc Tai Member [email protected] 0382907147

Tran Xuan Son Member [email protected] 0399360283

Doan Minh Duc Member [email protected] 0386452375

2. Product Background
Today, with the development of the internet, geographical distance is almost eliminated. People
around the world can connect anytime, anywhere in work and play. Over the past two years, the
Covid-19 epidemic has profoundly impacted many areas of life. In addition to health problems,
employment is also hotter than ever, when most people cannot go out or come to work. Staff
reduction is also typical in some small and medium companies to cut costs. The number of skilled
workers unemployed has increased. According to the General Statistics of Vietnam, the
underemployment in the working-age population in 2021 is 1.4 million people, an increase of
370,000 people compared to 2020.

The positive point is that the trend of working from home online is increasingly popular. More and
more businesses, organizations, and individuals are choosing to work online to adapt to the
epidemic. Freelancers in Vietnam are increasing day by day, but the situation of not paying money or
defrauding freelancers is quite common, so it is important to ensure the interests of the employer
and the employer matter of concern.

So we offer the market a solution called the Freelance Services Market (FSM). This is a website, an
intermediary that connects people with specialized skills with people with jobs to solve. Sellers can
post what services they offer. Buyers will choose the service they need with options for price and
product requirements. In addition, the sellers in the system can connect and share work.

3. Existing Systems
3.1. Vlance

❖ Overview::

● Link: https://www.vlance.vn
● vLance.vn is the largest job site in Vietnam. With a community of hundreds of thousands
of talented freelancers gathered from all over Vietnam, vLance.vn provides your
business with quality human resources to do the job at the most reasonable cost.
vLance.vn has successfully connected hundreds of businesses and freelancers across
Vietnam in the fields of software development, graphic design - website, online
marketing, accounting - tax.

❖ Strengths:

● Have many professions for users to choose

❖ Limitations:

● Must be paid to display a job to freelancers


● Waste time finding a freelancer
3.2. Fiver

❖ Overview::

● Link: https://www.fiverr.com
● Fiverr is a very large freelance network in the international market. This is a place of
"trade" between individuals, businesses, and freelancers who are working to make
money. Fiverr has millions of services created by individuals or groups.

❖ Strengths:

● Intuitive, clear interface


● Have many professions for users to choose
● Simple and fast steps to order a service

❖ Limitations:

● The Vietnamese language is not supported yet, the community is mainly foreigners
● There is no feature to connect freelancers

4. Business Opportunity
According to survey results from Anphabe Joint Stock Company, 14% of Vietnam's knowledge human
resources are now full-time freelancers. 26% of permanent workers are still willing to take on
freelance work outside when appropriate and 13% still work in parallel with part-time and
permanent work outside. In the coming time, due to the impact of the Covid-19 epidemic, the
number of part-time freelancers will increase from 39% to 44%. At the same time with the trend of
working online becoming more and more popular today, the needs of both sides, people with jobs,
and people needing jobs are increasingly diverse. This is the right time to come up with a solution to
help bring the two together.

Although there are systems on the market that provide similar solutions, there are still many
limitations such as the interface, not being optimal for both buyers and sellers. FSM is confident to
bring professional and comprehensive solutions, the perfect connection for buyers and sellers of
services.
5. Software Product Vision
The website has an intuitive interface, language, and features optimized for the Vietnamese market.
The operations are simple and easy to use, so users do not have to spend too much time learning
how to use them. Services give users a variety of options. Simple ordering operation, shortening
time, saving costs for buyers. The post a request feature helps connect sellers and share jobs with
each other, a management mechanism helps ensure the interests of buyers and sellers.

It is expected that soon, FSM will become the largest freelance job service website in Vietnam,
connecting millions of buyers and sellers.

6. Project Scope & Limitations


This project covers all processes from planning , requirement specification, design, development to
testing.

6.1. Major Features


There are 4 types of users in Freelance Services Marketplace website:

Type of User Description

Admin People who manage Freelance Services Marketplace

Guest The user that has not yet registered an account

Buyer People who already had an account and used Freelance Services Marketplace.
They will search and make offers to candidates they see fit for their job

Seller People who already had an account and used Freelance Services Marketplace.
They will be the ones to post certain services that they can provide

6.1.1. For Admin

Freelance Services Marketplace website will provide the following functions to admin:

FE Description

01 Login, logout, Authorization

02 Create admin, View list admin, View detail admin, Edit admin, Filter admin

03 View list user, view detail user, ban user, unban user, filter user

04 View list category, View detail category, Filter category, Create category, Edit
category, Delete category

05 View list skill, Create skill, Update skill, Delete skill

06 View list transaction, View detail transaction, Filter

07 Revenue, Count all users, Count all services, Count all requests
08 Check contract completion

6.1.2. For Guest


Freelance Services Marketplace website will provide the following functions to Guest :
FE Description

01 Register, Login

02 Search service, View list service, View detail service, Filter service

03 View top seller, View seller profile

6.1.3. For Buyer


Freelance Services Marketplace website will provide the following functions to Buyer:
FE Description

01 Login, Logout, Authorization

02 View user profile, Update user profile, Change password, Forgot password

03 View notification, Delete notification

04 Search service, View list service, View detail service, Filter service

05 View top seller, View seller profile

06 Create request, Update request, Delete request, View list request, View detail
request, Invite seller, Accept apply

07 View list offer, View detail offer, Accept offer, Reject offer

08 Create order, View list order, View detail order

09 View list contract, View detail contract, Request extra, Delivery confirm, Report
contract, Service rating

10 Become seller, Switch to seller, Add certificate, Add education, Add skill

11 Top up, View list transaction, View detail transaction, Payment


6.1.4. For Seller
Freelance Services Marketplace website will provide the following functions to Seller:
FE Description

01 Login, Logout, Authorization

02 View user profile, Update user profile, Change password, Forgot password

03 View notification, Delete notification

04 Search request, View list request, View detail request, Filter request

05 View seller profile, Add skill, Update skill, Add education, Update education, Add
certificate, Update certificate

06 View list service, View detail service, Create service, Update service, Delete
service, Pause service, Activate service

07 View list request, View detail request, Apply request

08 Create offer, View list offer, View detail offer

09 View list order, View detail order, Accept order, Reject order

10 View list contract, View detail contract, Upload delivery, Accept request extra,
Reject request extra

11 Switch to buyer

12 Top up, View list transaction, View detail transaction, Payment

6.2. Limitations & Exclusions


6.2.1 Limitations
LI Description

01 Guest must be registered account can use other function.

02 Only supporting Vietnamese interface.

03 There is no mechanism to validate the seller’s profile

II. Project Management Plan


1. Overview
1.1. WBS & Estimation
# WBS Item Complexity Est. effort

(man-days)

1 Common 42

1.1 Home page for guest Medium 7


1.2 Home page for buyer Medium 7

1.3 Home page for seller Medium 7

1.4 Home page for admin Medium 7

1.5 Search Complex 14

2 User authentication 31

2.1 Register Medium 7

2.2 Login Medium 7

2.3 Logout Simple 3

2.4 Authorization Complex 14

3 User profile management 26

3.1 View user profile Medium 7

3.2 Update user profile Medium 7

3.2 Forgot password Medium 7

3.3 Change password Simple 5

4 Seller profile management 24

4.1 Professional info Complex 14

4.2 View top seller Simple 5

4.3 View seller profile Simple 5

6 Notification Management 14

6.1 User notification Complex 14

7 Service management 24

7.1 View list service Simple 5


7.2 View detail service Simple 5

7.3 CRUD Service Complex 14

8 Request management 41

8.1 View list request Simple 5

8.2 View detail request Simple 5

8.3 CRUD request Complex 14

8.4 Apply request Simple 3

8.5 Accept apply Complex 14

9 Offer management 38

9.1 View list offer Simple 5

9.2 View detail offer Simple 5

9.3 Create offer Complex 14

9.4 Accept offer Complex 14

10 Order management 41

10.1 View list order Simple 5

10.2 View detail order Simple 5

10.3 Create order Complex

14

10.4 Accept order Complex 14

10.5 Reject order Simple 3

11 Contract management 43

11.1 Request extra Complex 14

11.2 Upload delivery Medium 7


11.3 Delivery confirm Medium 7

11.4 View list contract Simple 5

11.5 View detail contract Simple 5

11.6 Report contract Simple 5

11.7 Comment contract Medium 7

12 Service rating 10

12.1 Star rating Simple 5

12.2 Review Simple 5

13 User Type Management 9

13.1 Become seller Simple 3

13.2 Switch to buying Simple 3

13.3 Switch to seller Simple 3

14 Wallet management 34

14.1 Top-up Complex 14

14.2 Withdraw Complex 14

14.3 Payment Medium 10

14.4 View list transaction Simple 5

14.5 View detail transaction Simple 5

15 Admin management 12

15.1 CRUD Admin Medium 7

15.2 View list admin Simple 5

16 User management 16
16.1 View list user Simple 5

16.2 View detail user Simple 5

16.2 Ban user Simple 3

16.3 Unban user Simple 3

17 Category management 12

17.1 CRUD Category Medium 7

17.2 View list category Simple 5

18 Transaction management 10

18.1 View list transaction Medium 7

18.2 View detail transaction Simple 3

19 Dashboard management 30

19.1 Revenue Complex 10

19.2 Count all users Complex 10

19.3 Count all services Complex 10

Total Estimated Effort (man-days): 471

1.2. Project Objectives


1.2.1. Timelines
● This project must be finished before August 26, 2022.

1.2.2. Allocated Effort


● All members spend full effort in doing this project, 8 hours a day, 20 days per month in a
period of 4 months
1.3. Project Risks

# Risk Description Impact Possibility Response Plans

1 Requirement changes Medium High Adapt the requirement change by


using Iterative and Incremental
Software Process Model.

2 Issues in analyzing the Medium High We join in online meetings to


requirement discuss the requirement to solve
this problem. In case, we don’t
jump into solutions, we need
support from our supervisor.

4 Knowledge and skill are Medium Medium The technical leader will study and
limitations transfer them to all members
during the project.

5 New technology Medium Medium When the team decides on new


technology, the technical leader
will learn about that technology.

Then train the other members.

6 Broken device Medium High Prepare contingency expenses for


equipment rental to continue
project implementation

7 Lost data Medium High Back up data regularly

8 Project management High High Lack of project management skills


occurs slow or incomplete project
schedule
2. Management Approach
2.1. Project Process

We use the Iterative and Incremental Software Process Model – a process that combines the
iterative
design method with the incremental build model. It is developed in multiple small phases and
through
repeated cycles until the entire product development is completed. We choose this process model
because this project’s scope is big and the major requirements are defined clearly but expect to add
more detail over time. It has these advantages:

● Can develop prioritized requirements first.


● Initial product delivery is faster.
● Customers get important functionality early.
● Lowers initial delivery cost.
● Each release is a product increment so that the customer will have a working product at
hand all the time.
● Requirements changes can be easily accommodated

2.2. Quality Management


● The technical leader must carefully review each merge request before it could be merged.
● When coding, team members must follow the proposed requirements in the document.
● Unit testing to make sure that each function works correctly.
● Integration testing and System testing after implementing main functions
● Team members will perform another member’s source code review
● Implement coding conventions
2.3. Training Plan
Training Area Participants When, Duration Waiver Criteria

Java Spring Boot Lê Thanh Tùng 16/05/2022 – Mandatory


Trần Xuân Sơn 27/05/2022

Đoàn Minh Đức

Github All member 16/05/2022 – Mandatory


27/05/2022

IntelliJ, Postman Lê Thanh Tùng 16/05/2022 – Mandatory


Trần Xuân Sơn 27/05/2022

Đoàn Minh Đức

3. Master Schedule
4. Project Organization
4.1 Team & Structure

4.2. Role & Responsibility

Role Responsibility

Supervision Monitor project activities and evaluate project quality

Project Manager Planning, organizing, and directing the completion of specific


projects for an organization while ensuring these projects are on
time and within scope
Business analysis and Analyze and design business processes and systems
Design

Document Create Software requirements specifications(SRS),

Software Design Document (SDD)

Development Implement the user interface and server system

Test Responsible for test execution, including test set-up and test run,

evaluation of test run, error recovery, and test results recording

5. Project Communications

Communication Item Who/ Target Purpose When, Type, Tool,


Frequency Method(s)

Weekly meeting with All members, Report project status, Weekly Google meet
supervisor supervisor discuss problems

Daily discussion with team All members Discuss problems and Daily Google
member meet,
report progress
Facebook
messenger

Urgent meeting All members Fix bugs and support When any Google meet
about technical issues member
has issues

6. Configuration Management
6.1. Document Management
● Documents are stored in Google Drive.

6.2. Source Code Management


● Source code is stored and maintained on Github.

6.3. Tools & Infrastructures


Category Tools / Infrastructure

Technology React JS, Java/SpringBoot

Database MySQL

IDEs/Editors Visual Studio Code, IntelliJ

Diagramming DrawIO

Documentation Microsoft Word, Microsoft excel

Version Control GitHub, Google Drive


Deployment server ● Backend: AWS – Cloud Server Services
● Fontend: Firebase

Project management Microsoft excel, Google drive

III. Software Requirement Specification


1. Overall Description
The Freelance Services Marketplace (FSM) is an intermediary that connects people with skills in
certain industries and people who are looking for someone who can do a certain job for them.

The context diagram below illustrates the external entities and system interfaces for version 1.0. The
system is expected to grow over several releases, and towards commercialization.
2. User Requirements
2.1. Actors
# Actor Description

1 Guest People who haven’t registered an account

2 Buyer People who already had an account and used Freelance Services
Marketplace. They will search and make offers to candidates they see fit
for their job

3 Seller People who already had an account and used Freelance Services
Marketplace. They will be the ones to post certain services that they can
provide

4 Administrator People who manage Freelance Services Marketplace system

5 Paypal 3rd party performing payment services

2.2. Use Cases


2.2.1. Diagram(s)
2.2.1.1. Use Cases diagram for Guest
2.2.1.2. Use Cases diagram for Buyer
2.2.1.3. Use Cases diagram for Seller
2.2.1.4. Use Cases diagram for Administrator
2.2.2. Use Case Descriptions

# Use Case Actors Use Case Description & Main Flow

1 Register Guest ❖ Trigger: Customer wants to create a member account of FSM


❖ Description: Allow guests to create an account to participate in
the FSM system
❖ Pre-conditions: Visitors to the website of the FSM system
❖ Post-conditions: A guest has successfully created an account
and the system records new account information

2 Login Buyer/Seller/Admin ❖ Trigger: The buyer or seller wants login into the website or
administrator wants login into the system’s management page
❖ Description: Allow buyers, sellers, and admins who have FSM
accounts to login
❖ Pre-condition: Buyers, sellers and admins have successfully
accessed the website
❖ Post-conditions: Buyers, sellers, admin successfully logged in
and the system displays the corresponding page for each
account type

3 Logout Buyer/Seller/Admin ❖ Trigger: Buyer or seller wants to Log out of the website or
admin wants to log out of the system’s management page
❖ Description: Allow buyers, sellers, and admins who have FSM
accounts to logout
❖ Pre-condition: Buyers, sellers and admins have successfully
logged into the website
❖ Post-conditions: Buyers, sellers, and admins successfully log out
of the website

4 View user profile Buyer/Seller ❖ Trigger: Buyers, sellers see their basic profile information
❖ Description: Allows buyers, sellers to view their basic profile
information
❖ Pre-condition: : Buyers and sellers have successfully logged into
the website
❖ Post-conditions: The web page displays the user’s basic
information

5 Update user profile Buyer/Seller ❖ Trigger: Buyers, sellers update their basic profile information
❖ Description: Allows buyers, sellers to update their basic profile
information
❖ Pre-condition: Buyers and sellers have successfully logged into
the website
❖ Post-conditions: Changed information is saved successfully

6 Change passwords Buyer/Seller ❖ Trigger: Buyer, seller change their account password
❖ Description: Allows buyer, seller change their account password
❖ Pre-condition: Buyers and sellers have successfully logged into
the website
❖ Post-conditions: New password successfully updated

7 Forgot password Buyer/Seller ❖ Trigger: Buyers and sellers want to recover their password
when logging in to the website but forgot their password
❖ Description: Allow buyers and sellers to retrieve passwords
❖ Pre-condition: Buyer and Seller successfully access the website
❖ Post-conditions: New password sent to user

8 View notification Buyer/Seller ❖ Trigger: Buyers and sellers see the notification
❖ Description: Allow buyers and sellers see the notification
❖ Pre-condition: Buyers and sellers have successfully logged into
the website

❖ Post-conditions: The web page displays the content of the


notice

9 Delete notification Buyer/Seller ❖ Trigger: Buyers and sellers want to delete their notification
❖ Description: Allow buyers and sellers delete the notification
❖ Pre-condition:Buyers and sellers have successfully logged into
the website
❖ Post-conditions: Successful delete selected message

10 Search Guest/Buyer/Seller ❖ Trigger: Guest, buyer and Seller want to search


❖ Description: Allow guest, buyers and Seller to search
❖ Pre-condition: Guest,buyers and seller successfully access the
website

❖ Post-conditions: The website displays the correct search results


for the user’s search keywords
11 View list service Guest/Buyer/Seller ❖ Trigger: Guest, Buyers and Sellers want to see the list of the
service
❖ Description: Allow Guest, Buyers and Sellers to see the list of
the service
❖ Pre-condition: Guest, buyers and Seller successfully access the
website

❖ Post-conditions: The website displays the service list by


category
12 View detail service Guest/Buyer/Seller ❖ Trigger: Guest, Buyers and Sellers want to see the details of the
service
❖ Description: Allow Guest, Buyers and Sellers to see the details
of the service
❖ Pre-condition: Guest, buyers and Seller successfully access the
website

❖ Post-conditions: The website displays the service detail


13 Filter service Guest/Buyer ❖ Trigger: Guest, buyers want to filter services by their own
criteria
❖ Description: Allow guest, buyers to filter services by each
criteria
❖ Pre-condition: Search function successfully executed

❖ Post-conditions: The results returned are correct with the filter


criteria
14 Create service Seller ❖ Trigger: Seller wants to create a service
❖ Description: Allows sellers to create a new service by category
❖ Pre-condition: Sellers have successfully logged into the website

❖ Post-conditions: New service information is stored


15 Update service Seller ❖ Trigger: Seller wants to update service information
❖ Description: Allow the seller to update the information of the
service
❖ Pre-condition: At least 1 service has been created successfully

❖ Post-conditions: Service information is updated and stored


16 Delete service Seller ❖ Trigger: Seller wants to delete a service
❖ Description: Allow the seller to delete a service
❖ Pre-condition: At least 1 service has been created successfully
❖ Post-conditions: Service information is deleted

17 Activate service Seller ❖ Trigger: The Seller wants the service to be visible to other
buyers
❖ Description: Allow Seller to change the service’s status to
“open”
❖ Pre-condition: Status of service in “Pause”
❖ Post-conditions: The service’s status is changed to “Active”

18 Pause service Seller ❖ Trigger: The seller wants the service to be invisible to other
buyers
❖ Description: Allow Seller to change the service’s status to
“pause”
❖ Pre-condition: Status of service in “Activate”
❖ Post-conditions: The service’s status is changed to “ Pause “

19 View top seller Guest/Buyer ❖ Trigger: Guest and Buyers want to see the list and details of top
sellers
❖ Description: Allow Guest and Buyers to see the list and details
of top sellers
❖ Pre-condition: Guest and Buyers successfully access the website
❖ Post-conditions: The website displays a list of top sellers

20 View seller profile Guest/Buyer/Seller ❖ Trigger: Guest,Buyer and Seller wants to see advanced Seller
information
❖ Description:Allow Guest,Buyer and Seller see advanced Seller
information
❖ Pre-condition: Guest, Buyers, and Seller successfully access the
website

❖ Post-conditions: The website shows advanced information of


the seller
21 Become seller Buyer ❖ Trigger: Buyer wants to register as a seller
❖ Description: Allow buyers to register to become sellers
❖ Pre-condition: Buyer have successfully logged into the website
❖ Post-conditions: Add seller role
22 Professional info Seller ❖ Trigger: Seller wants more professional information
❖ Description: Allows the Seller to add professional information
such as skills, education, certifications
❖ Pre-condition: Seller have successfully logged into the website
❖ Post-conditions: Add and Save user professional information

23 Update Seller ❖ Trigger: Seller wants to update professional information


Professional info ❖ Description: Allow sellers to update professional information
❖ Pre-condition: Seller have successfully logged into the website

❖ Post-conditions: Professional information is updated and stored

24 Switch to seller Buyer ❖ Trigger: Buyer wants to change role to Seller


❖ Description: Allow Buyer to change role to Seller
❖ Pre-condition:Buyer has Seller role and is in Buyer status
❖ Post-conditions: Change role to seller

25 Switch to buyer Seller ❖ Trigger: Seller wants to change role to Buyer


❖ Description: Allow Seller to change role to Buyer
❖ Pre-condition: Seller is in Buyer status
❖ Post-conditions: Change role to buyer

26 Create request Buyer ❖ Trigger: Buyer wants to post a request to find a seller for his
work
❖ Description: Allow the buyer to post a request
❖ Pre-condition: Buyer have successfully logged into the website
❖ Post-conditions: Save the request’s information

27 View list request Buyer/Seller ❖ Trigger: Buyer and Seller want to see the list of the request
❖ Description: Allow Buyer and Seller to see the list of the request
❖ Pre-condition: Buyer and Seller have successfully logged into
the website
❖ Post-conditions: The website displays the request list

28 View detail request Buyer/Seller ❖ Trigger: Buyer and Seller want to see the details of the request
❖ Description: Allow Buyer and Seller to see and details of the
request
❖ Pre-condition: Buyer and Seller have successfully logged into
the website
❖ Post-conditions: The website displays the request detail

29 Update request Buyer ❖ Trigger: Buyer wants to update his posted request
❖ Description: Buyer to update his posted request
❖ Pre-condition: The status of the request is “Open”
❖ Post-conditions: Update and save the information of the
request

30 Delete request Buyer ❖ Trigger: Buyer wants to delete his posted request
❖ Description: Allow Buyer to delete his posted request
❖ Pre-condition: The status of the request is “Open”
❖ Post-conditions: Successful delete selected request

31 Invite seller Buyer ❖ Trigger: Buyers want to invite sellers to view and apply and their
requirements
❖ Description: Allow Buyers to invite sellers to view and apply and
their requirements
❖ Pre-condition: Buyer has at least 1 request successfully created
❖ Post-conditions: Notice of the request sent to the seller

32 Apply request Seller ❖ Trigger: The seller wants to apply to the Buyer’s request
❖ Description: Allow Seller to apply to the Buyer’s request
❖ Pre-condition: The status of the request is “Open”
❖ Post-conditions: Seller Information is sent to buyer

33 Accept apply Buyer ❖ Trigger: The buyer accepts a certain seller for his request to
post
❖ Description: Allow Buyer accepts a certain seller for his request
to post
❖ Pre-condition: The status of the request is “Open”
❖ Post-conditions: The status of the request is “Close “

34 Create offer Seller ❖ Trigger: The seller wants to make an offer to the request that
the buyer posted
❖ Description: Allow Seller to make an offer to the request that
the buyer posted
❖ Pre-condition: The status of the request is “Open”
❖ Post-conditions: Offer information sent to the buyer

35 View list offer Buyer/Seller ❖ Trigger: Buyer and Seller want to see the list of the offer
❖ Description: Allow buyers to see the list of offers they receive
per request
❖ Pre-condition: Buyer and Seller have successfully logged into
the website
❖ Post-conditions: The website displays the offer list

36 View detail offer Buyer/Seller ❖ Trigger: Buyer and Seller want to see the details of the offer
❖ Description: Allow buyers to see the detail of offers they
receive per request
❖ Pre-condition: Buyer and Seller have successfully logged into
the website
❖ Post-conditions: The website displays the offer detail

37 Accept offer Buyer ❖ Trigger: The buyer wants to accept the offer from the seller
❖ Description: Allow the Buyer to accept the offer from the seller
❖ Pre-condition: Received at least 1 offer from the seller
❖ Post-conditions: Convert the content of the offer into a
contract

38 Create order Buyer ❖ Trigger: Buyers want to create service orders to sellers
❖ Description: Allows buyers to create service orders to sellers
❖ Pre-condition: Wallet balance must be at least equal to the
total price of the service
❖ Post-conditions: Order information is sent to the seller

39 View list order Buyer/Seller ❖ Trigger: Buyer and Seller want to see the list of the order
❖ Description: Allow Buyer and Seller to see the list of the order
❖ Pre-condition: Buyer and Seller have successfully logged into
the website
❖ Post-conditions: The website displays the order list

40 View detail order Buyer/Seller ❖ Trigger: Buyer and Seller want to see the details of the order
❖ Description: Allow Buyer and Seller to see details of the order
❖ Pre-condition: Buyer and Seller have successfully logged into
the website
❖ Post-conditions: The website displays order details

41 Accept order Seller ❖ Trigger: Seller wants to accept order from buyer
❖ Description: Allow seller to accept order from buyer
❖ Pre-condition: Must have at least 1 order received
❖ Post-conditions: Convert the content of the order into a
contract

42 Reject order Seller ❖ Trigger: The seller wants to reject the buyer’s order
❖ Description: Allow the seller to reject the buyer’s order
❖ Pre-condition: Must have at least 1 order received
❖ Post-conditions: Change order status to rejected

43 View list contract Buyer/Seller ❖ Trigger: Buyer and Seller want to see the list of the contract
❖ Description: Allow buyer and seller to see the list of the
contract
❖ Pre-condition: Buyer and Seller have successfully logged into
the website
❖ Post-conditions: The website displays contract list

44 View detail Buyer/Seller ❖ Trigger: Buyer and Seller want to see the details of the contract
contract ❖ Description: Allow buyer and seller to see the details of the
contract
❖ Pre-condition: Buyer and Seller have successfully logged into
the website
❖ Post-conditions: The website displays contract details

45 Request extra Buyer ❖ Trigger: Buyer wants to add requirements to the contract
❖ Description: Allow buyer wants to add requirements to the
contract
❖ Pre-condition: Contract status is still in progress
❖ Post-conditions: Request extra information is sent to the seller

46 Accept request Seller ❖ Trigger: Seller wants to accept request extra from Buyer
extra ❖ Description: Allow Seller to accept request extra from Buyer
❖ Pre-condition: Must receive request extra from buyer
❖ Post-conditions: Add request extra information to the contract

47 Reject request Seller ❖ Trigger: Seller wants to Reject request extra from Buyer
extra ❖ Description: Allow Seller to Reject request extra from Buyer
❖ Pre-condition: Must receive request extra from buyer
❖ Post-conditions: Keep the information of the contract intact

48 Upload delivery Seller ❖ Trigger: Seller wants to upload delivered product


❖ Description: Allow seller to upload delivered product
Pre-condition: The contract status is “In progress”
❖ Post-conditions: Update information about delivery

49 Delivery confirm Buyer ❖ Trigger: The buyer wants to confirm receipt of delivery
successfully
❖ Description: Allow the buyer to confirm receipt of delivery
successfully
❖ Pre-condition: The contract status is “In progress”
❖ Post-conditions: Change the status of the contract to Done

50 Report contract Buyer ❖ Trigger: Buyer wants to report on contract


❖ Description: Allow buyer to report on contract
❖ Pre-condition: The contract status is “In progress”
❖ Post-conditions: Report information sent to the seller

51 Become seller Buyer ❖ Trigger: Buyer wants to become a seller to create services
❖ Description: Allows buyers to provide advanced information
such as education, skills, and certifications to become a seller
❖ Pre-condition: Buyer have successfully logged into the website
❖ Post-conditions: Save information and grant Seller role

52 Switch to buyer Seller ❖ Trigger: Seller wants to change status to Buyer


❖ Description: Allow Seller to change status to Buyer
❖ Pre-condition: Seller have successfully logged into the website
❖ Post-conditions: Show the Buyer’s homepage

53 Switch to seller Buyer ❖ Trigger: Buyer wants to change status to seller


❖ Description: Allow Buyer to change status to seller
❖ Pre-condition: Buyer has the role of Seller
❖ Post-conditions: Show the seller’s homepage

54 Top up Buyer/Seller ❖ Trigger: Buyer and seller want to top up wallet


❖ Description: Allow Buyer and seller to top up wallet
❖ Pre-condition: Buyer and Seller have successfully logged into
the website
❖ Post-conditions: Wallet balance is updated according to the
amount top-up by Buyers and Sellers
55 Withdraw Buyer/Seller ❖ Trigger: Buyer and seller want to withdraw
❖ Description: Allow Buyer and seller to withdraw
❖ Pre-condition: Buyer and Seller have successfully logged into
the website
❖ Post-conditions: Wallet balance is updated according to the
amount withdraw by Buyers and Sellers
56 Payment Buyer/Seller ❖ Trigger: Buyer and seller want to pay to create a contract
❖ Description: Allow Buyer and seller to pay to create a contract
❖ Pre-condition: Wallet balance is greater than or equal to the
amount to be paid
❖ Post-conditions: Update wallet balance

57 View list Buyer/Seller ❖ Trigger: Buyers and sellers want to see the list of transactions
transaction ❖ Description: Allow Buyers and sellers to see the list of
transactions
❖ Pre-condition: Buyer and Seller have successfully logged into
the website
❖ Post-conditions: The website displays transaction list

58 View detail Buyer/Seller ❖ Trigger: Buyers and sellers want to see the details of
transaction transactions
❖ Description: Allow Buyers and sellers to see the details of
transactions
❖ Pre-condition: Buyer and Seller have successfully logged into
the website
❖ Post-conditions: The website displays transaction details

59 View list admin Admin ❖ Trigger: The admin group leader wants to see the list of other
admin accounts
❖ Description: Allow the admin group leader to see the list of
other admin accounts
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: The website displays a list of administrators
60 View detail admin Admin ❖ Trigger: The admin group leader wants to see the detail of other
admin accounts
❖ Description: Allow the admin group leader to see detail of other
admin accounts
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: The website displays a detail of administrators
61 New admin Admin ❖ Trigger: Admin group leader wants to add another admin
account
❖ Description: Allow admin group leader to add another admin
account
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Website to save new administrator account
information
62 Update damin Admin ❖ Trigger: The administrator group leader wants to update other
administrator account information
❖ Description: Allow the administrator group leader wants to
update other administrator account information
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Website to save administrator account
informations
63 Delete admin Admin ❖ Trigger: The administrator group leader wants to delete other
administrator account
❖ Description: Allow the administrator group leader wants to
delete other administrator account
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Update admin list
64 View list user Admin ❖ Trigger: Admin wants to see the list of users
❖ Description: Allow admin to see the list of users
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: The website displays a list of user
65 View detail user Admin ❖ Trigger: Admin wants to see the detail of users
❖ Description: Allow admin to see the detail of users
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: The website displays a detail of user
66 Ban user Admin ❖ Trigger: Admin wants to block 1 user’s access
❖ Description: Allow admin to block 1 user’s access
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: User’s status changed to “Ban”
67 Unban user Admin ❖ Trigger: Admin wants to unban 1 user’s access
❖ Description: Allow admin to unban 1 user’s access
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: User’s status changed to “Normal”
68 View list category Admin ❖ Trigger: Admin wants to see the list of categories
❖ Description: Allow admin to see the list of categories
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: The website displays a list of categories
69 Create category Admin ❖ Trigger: Admin wants to create a new category
❖ Description: Allow admin to create a new category
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Save information of new category
70 Update category Admin ❖ Trigger: Admin wants to update a category
❖ Description: Allow admin to update a category
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Save information of category
71 Delete category Admin ❖ Trigger: Admin wants to delete a category
❖ Description: Allow admin to delete a category
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Update admin list category
72 View list skill Admin ❖ Trigger: Admin wants to see the list of skill by subcategory
❖ Description: Allow admin to see the list of categories by
subcategory
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: The website displays a list of skill by
subcategory
73 Create skill Admin ❖ Trigger: Admin wants to create a new skill
❖ Description: Allow admin to create a new skill
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Save information of new skill
74 Update skill Admin ❖ Trigger: Admin wants to update a skill
❖ Description: Allow admin to update a skill
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Save information of skill
75 Delete skill Admin ❖ Trigger: Admin wants to delete a skill
❖ Description: Allow admin to delete a skill
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Update admin list skill
76 View list Admin ❖ Trigger: Admin wants to see a list of system transactions
transaction ❖ Description: Allow admin wants to see a list of system
transactions
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: The website displays a list of transaction
77 View detail Admin ❖ Trigger: Admin wants to see a detail of system transactions
transaction ❖ Description: Allow admin wants to see a detail of system
transactions
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: The website displays a detail of transaction
78 Revenue Admin ❖ Trigger: The administrator wants to see the system’s revenue
statistics
❖ Description: Allow The administrator wants to see the system’s
revenue statistics
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Website displaying revenue statistics
information
79 Count users Admin ❖ Trigger: The administrator wants to see the system’s user
statistics
❖ Description: Allow The administrator wants to see the system’s
user statistics
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Website displaying user statistics information
80 Count services Admin ❖ Trigger: The administrator wants to see the system’s services
statistics
❖ Description: Allow The administrator wants to see the system’s
services statistics
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Website displaying services statistics
information
Count user Admin ❖ Trigger: The administrator wants to see the system’s user
statistics
❖ Description: Allow The administrator wants to see the system’s
user statistics
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Website displaying user statistics information
81 Count request Admin ❖ Trigger: The administrator wants to see the system’s request
statistics
❖ Description: Allow The administrator wants to see the system’s
request statistics
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Website displaying request statistics
information
82 Count contract Admin ❖ Trigger: The administrator wants to see the system’s contract
statistics
❖ Description: Allow The administrator wants to see the system’s
contract statistics
❖ Pre-condition: Successfully logged in as administrator
❖ Post-conditions: Website displaying contract statistics
information
83 Check contract Admin ❖ Trigger: The administrator wants to check contract completion
completion ❖ Description: Allow The administrator wants to check contract
completion
❖ Pre-condition: Successfully logged in as administrator
Post-conditions: The status of the contracts uploaded for 3
days handover will be changed to “Complete"

3. Functional Requirements
3.1. System Functional Overview
3.1.1. Screens Flow
3.1.1.1. Screens Flow For Guest
3.1.1.2. Screens Flow For Buyer

3.1.1.3. Screens Flow For Seller


3.1.1.4. Screens Flow For Administrator

3.1.2. Screen Descriptions


# Feature Screen Description

1 Home page for The screen welcomes guests to the


Common guests page.

2 Home page for The screen welcomes buyers to the


Common buyers page.

3 Home page for The screen welcomes sellers to the


Common sellers page.

4 Screen for guests to register to


User authentication Register become a buyer of the system

5 The screen for the user to sign in to the


User authentication Login system

6 The screen that shows general


User profile management User Profile information about the user

7 The screen for the user to reset


User profile management Forgot password password

8 The screen for the user to change


User profile management Change password password

9 Seller profile management Seller profile View seller information

10 Create advanced information for


Seller profile management Professional info sellers

11 Notification Management Notification Pop-ups show notifications

12 Service management Service list View list of service


13 Service management Service Detail View detail of service

14 Service management Create service Create new a service

15 Request management Request list View list of request

16 Request management Request detail View detail of request

17 Request management Create request Create new a request

18 Request management Intive seller Send an invitation to the seller

19 Offer management Offer list View list of offer

20 Offer management Offer detail View detail of offer

21 Offer management Create Offer Create new a offer

22 Order management Order list View list of order

23 Order management Order detail View detail of order

24 Order management Create order Create new a order

25 Contract management Contract list View list of contract

26 Contract management Contract detail View detail of contract

27 Contract management Service rating Evaluate the quality of the service

28 Wallet Management Payment See details of wallet

29 Wallet Management Top up Deposit money into wallet

30 Wallet Management Withdraw Withdraw money to Paypal account

30 Wallet Management View Transaction View the transactions made

31 Wallet Management Wallet info Update your wallet's Paypal account

32 User management User list View list of user

33 User management User detail View detail of user

34 Admin management Admin list View list of admi

35 Admin management Admin detail View detail of admin

36 Admin management New admin Create new a admin

37 Category management Category list View list of category

38 Category management Category Detail View detail of category

39 Category management New category Create new a category

40 Transaction management Transaction list View list of transaction

41 Transaction management Transaction Detail View detail of transaction


42 Skill management Skill list View list of skill

43 Skill management New skill Create new skill

3.1.3. Screen Authorization

Screen Guest Buyer Seller Admin

Home page for guest X

Search X

Home page for buyer X

Search X

Notification X

Home page for seller X

Search X

Notification X

Edit introduction X

Edit skill X

Add skill X

Edit education X

Add education X

Edit certificate X

Add certificate

Login X X X X

Register X

User profile X X

Update user profile X X

Change password X X

Forgot password X X X

Seller profile X X X

Professional information X

Add skill X
Add education X

Add certificate X

Service list X X X

Service Detail X X X

Activate service X

Pause service X

Update service X

Delete service X

Create service X

Request list X X

Request detail X X

Update request X

Delete request X

Apply request X

Create request X

Intive seller X

Offer list X X

Offer detail X X

Accept offer X

Create Offer X

Order list X X

Order detail X X

Accept Order X

Reject Order X

Create order X

Contract list X X

Contract detail X X

Upload delivery X

Service rating X

Confirm delivery X
Report contract X

Request extra X

Manage Wallet X X

Top up X X

Withdraw X X

Wallet info X X

View transaction X X

User list X

User detail X

Ban user X

Unban user X

Admin list X

Admin detail X

Update admin X

Delete admin X

Create admin X

Category list X

Category detail X

Update category X

Delete category X

New category X

Transaction list X

Transaction detail X

Skill list X

New skill X
3.1.4. Entity Relationship Diagram

Entities Description

# Entity Description

1 User Store information about the user's account

2 Buyer Store data of buyer

3 Seller Store data of seller

4 Education Store data of education

5 Certificate Store data of certificate

6 Skill Store data of skill

7 Profile Data storage of user's basic information

8 Wallet Store data of wallet

9 Service Store data of service

10 Category Store data of category


11 Notification Store data of notification

12 Offer Store data of offer

13 Request Store data of request

14 Order Store data of order

15 Extra offer Store data of extra offer

16 Requirement Store data of requirement

17 Milestones Store data of Milestones

18 Deliverable Store data of deliverable

19 Transaction Store data of transaction

20 Contract Store data of contract

21 Review Store data of review

3.2. Common feature


3.2.1. Home page for Guest
● Function trigger: This function is triggered when the guest goes to the website
● Function description: The guest can see some descriptions about FSM.
● Screen layout:
● Function Details: When the guest or user is not logged in, the home page will display the
introduction, list of services, list of top sellers, and list of founders

3.2.2. Home page for Buyer


● Function trigger: This function is triggered when the customer successfully logs into the
system
● Function description: Buyers can view the information about FSM and themselves
● Screen layout:
● Function Details: When customers successfully log in to the system, they are granted the right
to be a buyer and can add personal information, and search and view services and sellers.

3.2.3. Home page for Seller


● Function trigger: This function is triggered when the seller logs into the system Or the buyer
clicks "Trở thành người bán" in the personal information management section
● Function description: Sellers can manage their profile
Screen layout:

● Function Details: Seller: Manage advanced seller profile, add edit information and services
3.2.4. Home page for Admin
● Function trigger: This function is triggered when the administrator successfully logs in with
the admin account
● Function description: Admin can manage website objects
● Screen layout:

● Function Details: After successful login, the admin homepage will appear with information
such as dashboard, number of users, number of categories, number of services...

3.2.5. Search service


● Function trigger: This function is triggered when the user clicks to icon Search
● Function description: User can search for service, request
● Screen layout:
● Function Details: After successfully accessing the website, the user enters a keyword in the
box and then presses search, the system will return a list of results to the user.
3.3. User authentication Feature
3.3.1. Register
● Function trigger: This function is triggered when the guest clicks "Đăng ký" on the screen
● Function description: The guest can register an account to the user system.
● Screen layout:

● Function Details: The guest clicks to button “Đăng ký ” on Login screen, or access to function
screens. When the guest registers successfully, the system will auto login and redirect to the
“Hompage buyer” screen

3.3.2. Login
● Function trigger: This function is triggered when the guest or user clicks to button “ Đăng
nhập ” on the home page.
● Function description: The user logs in to the FSM system.
● Screen layout:
● Function Details: When the user hasn’t logged in FSM system when they click the button
“Đăng nhập” the system will forward to the “Log in” screen.

3.4. User profile management feature


3.4.1. User Profile
● Function trigger: This function is triggered when the user clicks “Thông tin cá nhân”
● Function description: The user can view some personal information.
● Screen layout:

● Function Details: After going to the View Profile screen, the User can view personal
information such as full name, username, and profile picture.
3.4.2. Change password
● Function trigger: : This function is triggered when the user clicks button “Đổi mật khẩu”
● Function description: User can change his account password
● Screen layout:

● Function Details: In the User profile screen, the user presses the "Đổi mật khẩu", a Dialog will
appear allowing the user to enter the old password and the new password to proceed with
the change.

3.4.3. Forgot password


● Function trigger: This function is triggered when the guest or user clicks on “Quên mật khẩu ”
on the login page
● Function description: Allow user to reset password
● Screen layout:
● Function Details: After the "Forgot password" screen appears, the user enters the Email and
presses the "Tiếp tục" button. Password reset link will be sent to Email, a user clicking on the
link will display "Forgot password" screen, user enters new password and confirm then press
"Xác nhận" to reset password

3.5. Seller profile management feature


3.5.1. View Seller profile
● Function trigger: This function is triggered when the guest/buyer clicks on the seller's name
or photo
● Function description: Guest/buyer can see some personal information and service of the seller
● Screen layout:
● Function Details: After the buyer clicks on the seller, the information will be displayed such as
services, skills, education, certificates...

3.5.2. Professional information


● Function trigger: This function is triggered when the buyer clicks “Trở thành người bán”
● Function description: Buyers have more advanced information to complete the process of
becoming a seller
● Screen layout:

● Function Details: After the "Professional information" screen appears, Buyer can enter
advanced information such as introduction, brand name, skills, education, certifications. This
is a step in the process of becoming a seller

3.6. Service management feature


3.6.1. View list service
● Function trigger: This function is triggered when the buyer clicks a category
● Function description: Guest/buyer can see the list of a service by category
● Screen layout:
● Function Details: After the guest/buyer clicks on each category, the list of services of that
category will be displayed on the screen
3.6.2. View detail service
● Function trigger: This function is triggered when the buyer clicks a service
● Function description: Guest/buyer can see the details of a service
● Screen layout:
● Function Details: The function displays detailed information of the service such as, title,
description, image, price of each specific package, content of each package...

3.6.2. Create service


● Function trigger: This function is triggered when the Seller clicks the button “Tạo dịch vụ ”
● Function description: Seller can create 1 new service
● Screen layout:

● Function Details: Creating a new service consists of 4 steps.

o Overview: Seller enter title, description, select category

o Service pack: By default, Seller will create a Basic package with title, deliverables,
delivery date, cost and contract cancellation fee.

o Test product: Seller uploads images and sample documents about the service's
products

o Confirm: Seller can choose Create new and open for Buyer to see his service, or
choose to create and close

3.7. Request management feature


3.7.1. View list request
● Function trigger: This function is triggered when the Seller clicks the “Yêu cầu”
● Function description: Seller can see list of requests by category
● Screen layout:
● Function Details: After clicking "Request", the screen will display a list of requests by category

3.7.2. View detail request


● Function trigger: This function is triggered when the Seller clicks the “Chi tết” in the View list
request screen
● Function description: Seller can see detail of requests
● Screen layout:

● Function Details: After clicking view details, the quest's information will be displayed such as
title, description, start date, cost...
3.7.3. Create request
● Function trigger: This function is triggered when the buyer clicks button “Tạo yêu cầu”
● Function description: Buyers can create a request to find the right seller for their job
● Screen layout:
● Function Details: After pressing "Tạo yêu cầu", a screen will appear for the buyer to enter
information such as: Category, seller level, skills, title, requirements, cost, contract
cancellation fee...

3.7. Offer management feature


3.7.1. View list offer
● Function trigger: This function is triggered when the buyer clicks button “Danh sách ứng
tuyển” in the request details screen
● Function description: Buyer can view list of seller's offers according to his request
● Screen layout:

● Function Details: The website will display a list of all the offers from the seller to the buyer's
request with basic information such as: description, delivery date, cost...

3.7.2. View detail offer


● Function trigger: This function is triggered when the buyer clicks button Chi tiết” in the offer
list screen
● Function description: Buyer can see details of seller's offer
● Screen layout: :
● Function Details: Details of the seller's offer to the seller's request will be displayed

3.7.3. Create offer


● Function trigger: This function is triggered when the buyer clicks button “Tạo đề nghịt” in the
request detail screen
● Function description: Seller can make an offer to buyer
● Screen layout:
● Function Details: When the screen shows up, the seller will enter a description, delivery date,
cost, and cancellation fee to send to Buyer.

3.8. Order management feature


3.8.1. View list order
● Function trigger: This function is triggered when the Buyer/Seller clicks the “Quản lý đặt
hàng”
● Function description: Seller/buyer can see their list of order
● Screen layout:

● Function Details: After clicking on the “Quản lý đặt hàng” the order list will be displayed
3.8.2. View detail order
● Function trigger: This function is triggered when the Seller clicks the button “Chi tết ” in list
service screen
● Function description: Seller can see the details of the order received
● Screen layout:

● Function Details: After pressing "details", the order information will be displayed

3.8.3. Create order


● Function trigger: This function is triggered when the Seller clicks the button “Mua ” in detail
service
● Function description: Buyer can create order 1 service to seller
● Screen layout:
● Function Details: After the buyer presses the "Mua" button, a window will appear for the
buyer to enter his required information, then press the "Tạo đặt hàng" button to send the
order to the seller, or cancel to create the order. other

3.9. Contract management feature


3.9.1. View list contract
● Function trigger: This function is triggered when the Buyer/Seller clicks the “Quản lý hợp
đồng”
● Function description: Seller/buyer can see their list of contract
● Screen layout:

● Function Details: after clicking on the “Quản lý hợp đồng” the contract list will be displayed
3.9.1. View detail contract
● Function trigger: This function is triggered when the Buyer/Seller clicks the button “Chi tiết”
in list of contract
● Function description: Buyer and seller can view contract details
● Screen layout:
● Function Details: Contract details will be displayed

3.10 .Service rating feature


3.10.1. Star Rating and Review
● Function trigger: This function is triggered when the Buyer or user clicks to button “ XÁc nhận
bàn giao”
● Function description: Buyers can rate the service
● Screen layout:
● Function Details: Buyers choose the number of stars, enter the review content to rate the
service they have purchased

3.11. Payment Management feature


3.11.1. Top up
● Function trigger: This function is triggered when the Buyer or user clicks to button “Nạp tiền”
● Function description: Users can top up the system via Paypal
● Screen layout:

● Function Details: After pressing "Nạp tiền", a window will appear for the user to enter the
amount to deposit. After pressing confirm, the system will transfer the user to Paypal's
payment system
3.11.2. Payment
● Function trigger: This function is triggered when the Buyer or user clicks to button “Thanh
toán”
● Function description: Confirm and allow users to pay bills from the funds in the wallet
● Screen layout:

● Function Details: After press "Thanh toán", the payment confirmation window will be
displayed. If you press confirm, the system will deduct money from the user's wallet

3.11.3. View list transaction


● Function trigger: : This function is triggered when the Buyer/Selerr clicks to “Quản lý ví”
● Function description: buyer/seller can see a list of all done transactions
● Screen layout:
● Function Details:Tthe screen displays the user's wallet information, including the balance,
history of the transactions performed

3.12 User management feature


3.12.1. View list user
● Function trigger: This function is triggered when the Admin clicks to “Người dùng thành
viên” in hompage admin screen
● Function description: Admin can view list off user
● Screen layout:

● Function Details: The screen will display a list of all the users of the system, with basic
information such as name, email, age...

3.14. Category management feature


3.14.1. View list category
● Function trigger: This function is triggered when the Admin clicks to “Danh mục” in hompage
admin screen
● Function description: Admin can view list of category
● Screen layout:

● Function Details: The screen will display a list of all category4. Non-Functional Requirements

3.14.2. Create new category


● Function trigger: This function is triggered when the Admin clicks to “Tạo mới danh mục” in
list category screen
● Function description: Admin can create new a category
● Screen layout:

● Function Details: The screen will display a box for admin to enter the category name and then
press the create button to create a new category

4.1. External Interfaces


4.1.1. User Interfaces
● The language is Vietnamese
● The data grids appearing on the system must have filter and sort functions.
● The system must ask for confirmation (Y/N) for data deletion operations.
● For sequential multi-step processes, a progress bar with detailed information is required.
● The entire drop-down list must be sorted in order of A to Z and ascending number
4.1.2. Software Interfaces
● The Paypal payment system executes the system's transactions

4.1.3. Hardware Interfaces


● The device must be connected to the internet

4.2. Quality Attributes


4.2.1. Usability
● Efficiency: Buttons and input boxes must be clearly labelled
● Engagement: Clear and dynamic website interface
● Fault tolerance: Alerts for incorrect input fields and data re-data
● Easy to learn: Simple operation, easy to remember
4.2.2. Reliability
● The system complies with business rules.

● The mean time to repair (MTTR): The time to handle system errors depends on the cause of
the error. Commonly, the errors are usually database connection errors, network errors,
authentication errors, etc. Such errors must take only 1-2 hours to be handled. For the
critical problems, it takes only less than 2 days.

4.2.3. Performance
● Require a powerful server machine with high-band internet access.
● Can work on almost any platform even with slower internet
● Expected number of simultaneous users should be at 1000.
● System should be able to deal with 1000 users at the same time.
● The system's database must handle at least 1000 users at any given time
● The loading page time must not exceed 3 seconds.

4.2.4. Security
● The system must use HTTPS to encrypt the information transferred between clients and
servers.
● Password must be hashed before inserted into the database

● Using authentication and authorization to access protected resources.

● Actions available for each user are limited. Each role has permission for the purpose of using

5. Requirement Appendix
5.1. Business Rules
ID Rule Definition
BR-01 Buyer/Seller top up into the wallet through the intermediary payment system Paypal
BR-02 The minimum cost should be 1$
BR-03 The maximum cost no more than 10 digits
BR-03 The minimum possible CancelFee is 0%
BR-04 The maximum possible CancelFee is 100%
BR-05 The minimum delivery date must be 1 day
BR-06 Seller has 3 levels: Beginner, Advanced, Professional
BR-07 At Beginner level, Seller can create up to 5 services
BR-08 At Advanced level, Seller can create up to 15 services
BR-09 At Professional level, Seller can create up to 50 services
BR-10 A service must have at least 1 package
BR-11 A service can have up to 3 packages
BR-12 To successfully become a seller, the buyer must provide sufficient basic and
advanced information and create at least 1 service.
BR-13 TotalPrice = Cost * Quantity
BR-14 The CancelFee is calculated as a percentage of the TotalPrice value and is decided by
the buyer and seller.
BR-15 Buyer must pay 100% of TotalPrice in advance to create order
In order to accept an order from Buyer, Seller will be charged the corresponding
CancelFee from the service plan. This fee is refundable upon completion of the
contract
BR-16 Buyer is refunded 100% of the value of the service package if the seller refuses to
accept the order
BR-17 Buyer cancels contract when contract status is "Pending", get 100% value of
TotalPrice
BR-18 The buyer cancels the contract when the contract status is "In Process", the amount
received is equal to TotalPrice - CancelFee
BR-19 The seller who cancels the contract when the status is "In Progress" will lose 100% of
the CancelFee value.
BR-20 The contract is cancelled when the status is "In Process", the buyer gets back 100%
of the contract value plus 90% of the CancelFee value
BR-21 The contract is completed, the seller gets back 100% of the CancelFee value, plus
90% of TotalPrice
BR-22 To create a request, the balance in the buyer's wallet must be greater than or equal
to TotalPrice
BR-23 To apply for a request, the seller wallet balance must be greater than or equal to the
request's Canelfree
BR-24 To create an offer, the balance in Seller's wallet must be greater than or equal to
Cancel Free in the Offer
BR-25 There is no requirement to maintain a minimum balance in the user's wallet

5.2. Application Messages List


# Messag Message Context Content
e code Type
1 MSG01 Text message There is not any search result Tìm kiếm không có kết quả
2 MSG02 In red, under Input-required fields are empty Không được để trống
the text box
3 MSG03 Text message Updating asset(s) information Cập nhật thông tin thành
successfully công
4 MSG04 In red, under Username input invalid Tên đăng nhập tối đa 30 ký
the text box information tự, không gồm kí tự đặc
biệt
5 MSG05 In red, under Password input invalid Mật khẩu từ 6 đến 30 kí tự,
the text box information ít nhất 1 kí tự viết hoa và số
6 MSG06 In red, under Confirm password does not Xác nhận mật khẩu phải
the text box match trùng khớp
7 MSG07 In red, under Email input invalid information Email phải theo mẫu
the text box '[email protected]'
8 MSG08 In red, under First Name input invalid Họ phải từ 2 đến 30 kí tự
the text box information
9 MSG09 In red, under Last Name input invalid Tên phải từ 2 đến 30 kí tự
the text box information
10 MSG10 In red, under Username duplicate Tên đăng nhập đã tồn tại,
the text box vui lòng thử lại
11 MSG11 In red, under Email duplicate Email đã được sử dụng, vui
the text box lòng thử lại
12 MSG12 Text message Input the wrong account or Tài khoản/email hoặc
password password không đúng
13 MSG13 Text message Successfully updated Cập nhật thông tin thành
công
14 MSG14 Text message Update failed Cập nhật thông tin thất bại
15 MSG15 Text message Change password successfully Cập nhật mật khẩu thành
công
16 MSG16 Text message Create request successfully Tạo yêu cầu thành công
17 MSG17 Text message Update request successfully Cập nhật yêu cầu thành
công
18 MSG18 Text message Delete request successfully Xóa yêu cầu thành công
19 MSG19 Text message Create service successfully Tạo dịch vụ thành công
20 MSG20 Text message Update service successfully Cập nhật dịch vụ thành
công
21 MSG21 Text message Delete service successfully Xóa dịch vụ thành công
22 MSG22 Text message Update introduction Cập nhật giới thiệu thành
successfully công
23 MSG23 Text message Update skill successfully Cập nhật kỹ năng thành
công
24 MSG24 Text message Update education successfully Cập nhật học vấn thành
công
25 MSG25 Text message Update certificate successfully Cập nhật chứng chỉ thành
công
26 MSG26 Text message Create offer successfully Tạo đề nghị thành công
27 MSG27 Text message Create order successfully Tạo đạt hàng thành công
28 MSG28 Text message Cancel order successfully Hủy đặt hàng thành công
29 MSG29 Text message Accept order Duyệt đơn đặt thàng thành
công
30 MSG30 Text message Reject order Từ chối đơn đặt hàng thành
công
31 MSG31 Text message Cancel contract successfully Hủy hợp đồng thành công
32 MSG32 Text message Upload delivery successfully Tải lên bàn giao thành công
33 MSG33 Text message Confirm delivery successfully Xác nhận bàn giao thành
công
34 MSG34 Text message Payment successfully Thanh toán thành công
35 MSG35 Text message Payment failed Thanh toán thất bại
36 MSG36 Text message Apply request successfully Ứng tuyển thành công
37 MSG37 Text message Create category successfully Tạo danh mục thành công
38 MSG38 Text message Create subcategory Tạo danh mục con thành
successfully công
39 MSG39 Text message Create Skill successfully Tạo kỹ năng thành công
40 MSG40 Text message Ban User successfully Cấm người dùng thành
công
41 MSG41 Text message Unban user successfully Bỏ cấm người dùng thành
công

IV. Software Design Description


1. Overall Description
1.1. Assumptions
This system is designed based on the following assumptions:

● Web servers run on Amazon Web Services(AWS) which supports Internet connection
● Database using MySQL
● Chromium-based web browser

1.2. Design Constraints


This system should be complied with following items:
● Use JSON to transfer data from browser to server, server to browser.
● End-user’s Environment: Any web browser that users have installed in their personal devices
like: Google Chrome, Microsoft Edge, and Safari.
● Support these languages: Vietnamese
● Apply multi-layer architecture for back-end systems.
● System uses JSON Web Token (JWT) authentication, in which the authentication server
returns an access token after the user logged in. Then the client will include the access token
in each request to access protected resources.

2. System Architecture Design


2.1. Overall Architecture
In this project, we choose Client-Server architecture

❖ Client-server architecture: The architecture of a computer network in which many clients


request and receive service from a centralized server. Client computers provide an interface
to allow a computer user to request services of the server and to display the results the
server returns. Servers wait for requests to arrive from clients and then respond to them.
❖ Advantages of Client-Server:
o Scalability: You can separately improve the capacity of clients and servers. You can
increase (or enhance) any aspect at any time.
o Centralization of control: Access, resources, and integrity of data are governed by
the dedicated server so that unwanted or unauthorized clients cannot damage the
system.
o Easy maintenance: Client-server architecture is a distributed model representing
dispersed responsibilities among independent computers, it’s easy to replace,
upgrade, repair, and relocate a server while clients remain unaffected. This
independence of the changes is also known as encapsulation.
o Data integrity: Client-server ensures data integrity when something goes wrong
❖ Disadvantage of Client-Server:
o Information security: Due to having to exchange data between 2 different
computers and in 2 geographically distant areas. Therefore, the ability to secure
network information is another limitation of the Client server. However, this
problem has some protocols that support data security in transmission. Commonly
used protocols like HTTPS
o Maintain: Need to maintain and maintain the server regularly.
2.2. System Architecture
2.2.1 Client

Redux is a library, Redux architecture introduces components like

 Action: Enables data passing to the dispatcher


 Reducer: Logic that decides how your data changes exist in pure functions
 Store: Holds a state object that denotes the state of the entire app
 View: Same as the view in MVC architecture, but in the context of React components
2.2.2. Server

For servers, we use multi-layer architecture. It has high security and limits the risks because there are
many different tiers that can be separated, and management becomes easy. If one layer fails, the
other layer will not be affected. In addition, this architecture is highly flexible, we can flexibly add
resources to each layer and correct each layer in accordance with the requirements.
2.3. Package Diagram

Code package:

No Package Description

01 Contiene component
pages

01 All components that share among many views


component

02 redux Redux serves states that need to be used across your entire application

03 reducers Handle actions

04 selectors Where to define the states to display on the view

05 services Receive the API from the server sent to

06 srs Almost all of the classes will be in this directory

07 controllers All controller classes are defined in this folder

08 services Services classes that are used in the system

09 repositories Contains classes that handle getting data into and out of the data store.

10 model All classes define models for mapping with database tables.

11 enumerable All classes define enumerable for mapping with database tables.

12 security Provides system security

13 filters Provide the ability to filter users, services


3. System Detailed Design
3.1. Function related to Authentication
3.1.1. Class Diagram

3.1.2. Sequence Diagram(s)


3.1.2.1 Login
3.2. Function related to User
3.2.1. Class Diagram

3.2.2. Sequence Diagram(s)


3.2.2.1. View list User

3.2.2.2. Ban User

3.2.2.3. Unban User


3.2.2.4. Change password

3.2.2.5. Reset password


3.3. Function related to Service
3.3.1. Class Diagram

3.3.2. Sequence Diagram(s)


3.3.2.1. View list ofBboxservice
3.3.2.2.Create Boxservice

3.3.2.3. Update Boxservice

3.3.2.4. Delete Boxservice


3.4. Function related to Request
3.4.1. Class Diagram

3.4.2. Sequence Diagram(s)


3.4.2.1. Create request
3.4.2.2. Update request

3.5. Function related to Offer


3.5.1. Class Diagram
3.5.2. Sequence Diagram(s)
3.5.2.1. Create offer

3.6. Function related to Contract


3.6.1. Class Diagram
3.6.2. Sequence Diagram(s)
3.7.2.1. View detail contract

3.7.2.2. Upload delivery


3.8 Function related to Admin
3.8.1. Class Diagram
3.8.2. Sequence Diagram(s)
3.8.2.1. Update admin

3.8.2.2. Delete admin

4. Class Specification
4.1. Controller
4.1.1.AdminController
# Method Description
1 countTotalService Count the total number of services
2 countTotalServiceByCatId Count the total number of services buy category
3 countTotalPostRequestByCatId Count the total number of post request by category
4 countTotalContractByCatId Count the total number of contract by category
5 getContractByCategoryId Get contract by category
6 getTotalRevenue Get total revenue
7 countTotalUser Count the total number of user
8 getAllCountData Get all count data of dashboard
9 getAllUser Get all users using the system
10 getAllTransaction Get all transaction of user
11 getTotalRevenueToday Get total revenue today
12 getTotalRevenueByMonth Get total revenue by month
13 banOrUnbanUser Ban or Unban user access into website
14 saveAdmin Save info of admin account
15 updateAdmin Update information of admin account
16 deleteAdmin Delete admin account
17 getListAdmin Get list admin
18 getAdminById Get admin by id
19 getUserById Get user by id
20 getAllTransactionByUserId Get all transaction by user
21 getTransactionById Get transaction by id
22 authenticationAdmin Authentication Admin
Automatically complete the contract after 3 days of
23 autoCompleteContract
uploading and handing over

4.1.2. AuthController
# Method Description
authenticateUser
1 Authenticate user
registerUser
2 Signing up for a user account
verifyAccount
3 Verify account
4 processForgotPassword Process forgot password

4.1.3. BoxController

# Method Description
1 addBox Create new boxservice
updateService
2 Update boxservice
deleteBox
3 Delete boxservice
getTop8BoxByTotalContract
4 Get top 8 boxservice by total contract
getTop8BoxByCategoryOrderByImpress
Get top 8 boxservice by category and sort buy
5 ion
impress
getListBoxHistory
6 Get list box history
getBoxes
7 Get boxes
search Search
8
searchBySearchKeyWord
9 Search by keyword
getBoxServiceBySellerId
10 Get box service by seller Id
updateBoxStatus
11 Update box status
getAllPosts Get all posts
12
getServiceById
13 Get service by id
getBoxByIdForGuest
14 Get box by id for guest
getAllServiceByCategoryId
15 Get all service by category Id
getRatingsForSeller
16 Get ratings for seller
getRatingForBoxService
17 Get rating for box service
getAllServiceByCategoryIdPagination
18 Get all service by category id pagination
searchAllServiceByCatNameByServiceT
Search all service by category name and service
19 ypeName
type name

4.1.4. CatergoryController
# Method Description
addCategory
1 Create new category
addCategories
2 Create new categories
getAllCategories
3 Get all categories
findProductById
4 Find product by id
findProductByName
5 Find product by name
updateCategory Update Category
6
deleteCategory
7 Delete Category

4.1.5. CommentController
# Method Description
addComment Add comment in contract
1
updateComment Update comment
2
deleteComment
3 Delete comment

4.1.6. ContractController
# Method Description
getContractById Get contract by id
1
createContractFromBuyer
2 Create contract from buyer
createContractFromOffer
3 Create contract from offer
createContractFromApply
4 Create contract from apply
acceptContractFromSeller Accept contract from seller
5
rejectContractFromSeller
6 Reject contract from seller
rejectContractFromBuyer
7 Reject contract from buyer
deliveryBySeller Delivery by seller
8
9 deliveryBySellerForMilestone Delivery by seller for milestone
updateDelivery
10 Update delivery
acceptDeliveryContractFromBuyer
11 Accept delivery contract from buyer
acceptDeliveryContractFromBuyer Accept delivery contract from buyer
12
createExtraOffer
13 Create extra offer in contract
acceptExtraOfferFromSeller Accept extra offer from seller
14
CancelExtraOffer
15 Cancel extra offer
getContractByStatus
16 Get contract by status
getOrders Get orders
17
getContracts Get contracts
18
ratingSellerFromBuyer
19 Rating seller from buyer
flagContractFromBuyer Flag contract from buyer
20
getComments Get comment
21
getAvatarBoth
22 Get avatar

4.1.7. FileController
# Method Description
uploadImage Upload image
1
getInfo
2 Get info
deleteFile
3 Delete file

4.1.8. PackageController
# Method Description
addPackage
1 Add package
updatePackage Update package
2
deletePackage Delete package
3

4.1.9. PostRequestController
# Method Description
addPostRequestByBuyer Add post request by buyer
1
getPostRequestByBuyerCreated Get post request by buyer created
2
getListSellerApplyRequest Get list seller apply request
3
getPostRequestByCategoryId Get post request by category id
4
getPostRequestDetails
5 Get post request details
updatePostRequest
6 Update post request
sellerApplyRequest
7 Seller apply request
sellerSendOffer Seller send offer
8
sellerApply Seller apply
9
getTenSellerTarget
10 get 10 seller target

4.1.10. SellerController
# Method Description
getListSellers
1 Get list sellers
getListUsers
2 Get list user
getSellerProfile Get seller profile
3
getSellerByBrandName Get seller by brandnName
4
updateInfo
5 Update info
getTop3SellerByRank Get top 3 seller by rank
6
getSellerBySkillNameAndLevelOrderBySellerI
Get seller by skill name and lever
7 d

8 getSellerBySkillNameAndLevel Get seller by skill name and level

9 getOfferRequests Get offer requests


4.1.11. SellerDetailsInfoController
# Method Description
addCertificate Add certificate
1
updateCertificate Update certificate
2
deleteCertificate
3 Delete certificate
addEducation
4 Add education
updateEducation Update education
5
DeleteEducation
6 deleteEducation
addLanguage
7 Add language
updateLanguage
8 Update language
deleteLanguage
9 Delete language
addSkill
10 Add skill
updateSkill Update skill
11
deleteSkill
12 Delete skill
addUrlProfile Add url profile
13
updateUrlProfile
14 Update url profile
deleteUrlProfile Delete url profile
15

4.1.12. SkillController
# Method Description
getAllSkillBySellerId Get all skill by seller id
1
getSkillMetaBySubCategory Get skill meta by sub category
2
getSkillMetaDataList Get list of skill meta data
3
getSkillMetaData
4 Get skill meta data
addSkillMetaByAdmin
5 Add skill meta by admin
updateSkillMetaByAdmin Update skill meta by admin
6
4.1.13. SubCategoryController
# Method Description
1 getByCategory Get by category
2 getAllCategory Get all category

4.1.14. UserController
# Method Description
- Description: getCurrentUser
getCurrentUser
1 - Inputs: UserPrincipal currentUser
- Outputs: User
- Description: getUserProfile
getUserProfile
2 - Inputs: UUID id
- Outputs: User
getUSerProfileByUserName
3 Get user profile by user name
getListUsers Get list users
4
updateUser Update user
5
joinSelling
6 Join selling
getWallet
7 get wallet
getOfferRequests Get offer request
8
processResetPassword
9 Process reset password
changePassword Change password
10
readNotification
11 Read notification
getNotifications
12 Get notifications

4.2. Repository
4.2.1. ActivityTypeRepository
# Method Description
1 findByActivityType Find Set Activity Type by User Activity Type
2 findByUsers_Id Find Activity Type by User Id

4.2.2. TransactionRepository
# Method Description
1 findTransactionByUserId Find Transaction By User Id
2 findAllByOrderByCreateAtAsc Find all by Order and Create At Sort By ascending
3 findAllByWallet_User_Id Find all User Id
4.2.3. WalletRepository
# Method Description
1 findWalletByUserId Find Wallet by User Id

4.2.4. AdminRepository
# Method Description
1 existsAdminByAdminAccount Check Admin exists by Admin Account

4.2.5. BoxRepository
# Method Description
1 findAllBySellerIdAndStatus Find all by Seller Id and Status pagination
2 getAllServiceByCategoryId Find all Service by Category Id
3 getAllServiceByCategoryId Find all Service by Category Id pagination
4 findAll Find all pagination
5 countBySubCategory_Category_Id Count total by Category Id
6 findAllBySubCategory_Category_Id Find all by Category Id pagination
findAllBySubCategory_NameContainsOr Find all by SubCategory Name contain or
7
SubCategory_Category_NameContains Category Name contain pagination
8 findAllBySellerId Find all by Seller Id
findAllBySubCategoryAndSearchKeyWor Find all by Sub Category Id and Status and Title
9
d pagination
Find all by Sub Category Id and Status and Title
findAllBySubCategoryIdAndFromPriceBe
10 and From Price with Min Price < From Price <
tweenAndTitleLike
Max Price pagination
Find all by Status and Title and From Price with
11 findAllByFromPriceAndSearchKeyWord
Min Price < From Price < Max Price pagination
12 findAllByTitleLike Find all Status and Title pagination
Get top 8 by Status order by Total Final
13 getTop8ByTotalFinalContract
Contract Descending
getTop8BoxByCategoryOrderByTotalFin Get top 8 by Status and Category Id order by
14
alContract Total Final Contract Descending

4.2.6. BuyerRepository
# Method Description
1 findBuyerByUserId Find Buyer by User Id

4.2.7. CategoryRepository
# Method Description
1 findByName Find Category by Category Name
2 findCategoryById Find Category by Category Id

4.2.8. CommentRepository
# Method Description
findAllByContractIdOrderByCreateAtDes Find all by Contract Id order by Create At
1
c Descending
4.2.9. ContractRepository
# Method Description
Find all by Order Status and Buyer Id Or
1 findAllByOrderStatusAndBuyerIdOrSellerId
Seller Id
2 findAllByOrderStatusAndBuyerId Find all by Order Status and Buyer Id
Count total Revenue where Contract Status
3 countTotalRevenue
(COMPLETE)
4 findAllByContractStatusAndBuyerId Find all by Contract Status and Buyer Id
findAllByContractStatusAndSellerIdOrBuye Find all by Contract Status and Seller Id or
5
rId Buyer Id
6 countTotalRevenueToday Count total revenue today
7 countTotalRevenueByMonth Count total revenue by month
8 countContractByPostRequest_Category_Id Count total Contract by Category Id
9 findAllByPostRequest_Category_Id Find all by Category Id
10 findAllByContractStatus Find all by Contract Status

4.2.10. DeliveryRepository

# Method Description
1 existsByMilestoneId Check Delivery exists by Milestone Id
2 findByContractId Find Delivery by Contract Id

4.2.11. HistoryBoxRepository
# Method Description
findAllByUserIdOrderByCreateAtAs
1 Find all by User Id order by Create At Ascending
c
2 findBoxIdFromUser Find Box Id by User Id

4.2.12. MilestoneContractRepository
# Method Description
1 findAllByPostRequestId Find all by Post Request Id

4.2.13. NotificationRepository
# Method Description
1 findAllByUserId Find all by User Id
2 findAllByUnread Find all by Unread

4.2.14. OfferRequestRepository
# Method Description
1 findAllByPostRequestId Find all by Post Request Id
2 findAllBySellerId Find all by Seller Id

4.2.15. PackageRepository
# Method Description
1 getBoxIdByPackage Get Box Id by Package Id
4.2.16. PostRequestRepository
# Method Description
1 findAllByUser_Id Find all by User Id
2 findAllByCategoryIdAndStatus Find all by Category Id and Status
3 findPostRequestById Find Post Request by Post Request Id
countPostRequestByCategory_I
4 Count total Post Request by Category Id
d

4.2.17. RatingRepository
# Method Description
findAllByBoxIdOrderByRatingPointDes Find all by Box Id order by Rating Point
1
c Desending
2 findAllByBoxIdOrderByCreateAtDesc Find all by Box Id order by Create At Desending

4.2.18. SellerRepository
# Method Description
1 existsBySellerNumber Check exists by Seller Number
2 findSellerByUserId Find Seller by User Id
3 existsByUserId Check exists by User Id
4 findSellerByBrandName Find Seller by Brand Name
5 findTop3ByRankSeller Find top 3 by Rank Seller
6 findAllByPostRequests_Id Find all by Post Request Id
7 findAllByRankSeller Find all by Rank Seller
Get Seller Id by Sub Category Id and Rank Seller or
8 getTenSellerBySubCategoryId Skill Name Contain Skills Name group by Seller Id
order by random

4.2.19. SkillMetaDataRepository
# Method Description
1 findAllBySubCategoryId Find all by SubCategory Id
2 findAllByNameIn Find all by Name Contain list String Name

4.2.20. SkillRepository
# Method Description
1 findSkillBySellerId Find Skill by Seller Id
findAllByNameInAndLevelOrderBySeller_I Find all by Name contain in list string Name
2
d and Level order by Seller Id
3 findAllBySeller_Id Find all Skill by Seller Id

4.2.21. SubCategoryRepository
# Method Description
1 findByCategoryId Find list Sub Category by Category Id
2 findSubCategoryById Find Sub Category by Id

4.2.22. UserRepository
# Method Description
1 findUserByEmail Find Optional User by Email
2 findByUsername Find Optional User by User Name
3 findByUsernameOrEmail Find Optional User by User Name and Email
4 findByEmail Find User by Email
5 findByResetPasswordToken Find User by Reset Password Token
6 existsByUsername Check User exists by User Name
7 existsByEmail Check User exists by Email
8 findUserByVerificationCode Find User by Verification Code
9 findUserById Find User by Id
10 findUserByPhoneNumber Find User by Phone Number

4.3. Service
4.3.1. ActivityTypeService
# Method Description
1 getByActivityType Get Set Activity Type by User Activity Type
2 saveType Save Activity Type
3 getActivityTypeByUserId Get User Activity Type by Id

4.3.2. AdminService
# Method Description
1 getAllCountDataResponse Count all total User, total Service, total Revenue
2 getAllUser Get List User
3 countTotalRevenueToday Count total Revenue today
4 countTotalRevenueByMonth Count total Revenue by month
5 saveAdmin Create new Admin
6 updateAdmin Update Admin
7 deleteAdmin Delete Admin
8 getListAdmin Get list Admin
9 getAdminById Get Admin Profile Response by Id

4.3.3. BoxService
# Method Description
1 addBox User Create new Box
2 updateBox User Update Box
3 deleteBox User Delete Box by Id
4 updateStatus User Update Status
5 findByResetPasswordToken Find User by Reset Password Token
6 getAllServiceByCategoryID Get all Service by Category Id
7 getAllService Get list all Service
8 getServiceByID User Get Service by Id
9 getBoxByIdForGuest Get Service by Id
Get List Service by Seller Id and Box Status
10 getListServiceBySellerId
pagination
11 getAllServiceByCatIdPagination Get all Service by Category Id pagination
Get all Service by Category Name and Sub
12 searchServiceByCatNameBySubCateName
Category name pagination
13 countTotalService Count total Service
14 countTotalServiceByCat Count total Service by Category Id
Get List all service by Category Id and
15 getBoxes Subcategory Id and Min Price and Max
Price and Rating Point pagination
Get List Box Search Response by Box
16 search
Search Request
Get List Box Search Response by Search
Key Word(String), Category Id,
17 searchResult SubCategory Id, Min Price (Big Decimal),
Max Price (Big Decimal), Rating Point(int)
pagination
18 getListHistoryBox User Get List History Box
19 getTop8BoxByTotalContract Get top 8 box by Total Contract
getTop8BoxByCategoryOrderByTotalContrac Get top 8 Box by Category Id order by
20
t Total Contract

4.3.4. CategoryService
# Method Description
1 saveCategory Create new Category
2 saveCategories Create new list Category
3 getCategories Get List all Category
4 getCategoryById Get Category by Id
5 getCategoryByName Get Category by Name
6 deleteCategoryById Delete Category by Id
7 updateCategory Update Category

4.3.5. CertificateService
# Method Description
1 addCertificate Create new Certificate
2 update Update Certificate by Certificate id
3 delete Delete Certificate by Certificate Id

4.3.6. CommentService
# Method Description
1 add User Add new Comment
2 update User Update Comment by id
3 delete User Delete Comment by id
4 getCommentsByContract Get list comment by Contract Id

4.3.7. ContractService
# Method Description
1 createContract User Create new Contract
2 updateStatusAcceptFromSeller Seller Update Status Accept
3 updateStatusRejectFromSeller Seller Update Status Reject
4 updateStatusCancelFromBuyer Buyer Update Status Cancel
updateStatusAcceptDeliveryFromBuye
5 Buyer Update Status Accept Delivery
r
6 acceptDeliveryForMilestone User accept Delivery for Milestone
7 createContractFromSellerOffer Create new Contract when Seller Offer
8 createContractFromSellerApply Create new Contract when Seller Apply
9 flagNotAcceptDelivery User not accept delivery
10 getContractById User Get Contract by Id
11 getTotalRevenue Count Total Revenue
12 countTotalContractByCatId Count Total Contract by Category Id
13 getContractsByCategoryId Get List Contract by Category Id
14 getContractByStatus Get List Contract by Status
Get List Contract by Order Status(PENDING) and
15 getOrders
User
Get List Contract by Order
16 getContracts
Status(To_CONTRACT) and User
Auto check completed contract when delivery
17 autoCheckCompleteContract
enough time
18 getAvatarBoth Get Avatar from seller and buyer of contract

4.3.8. CustomUserDetailsService
# Method Description
1 loadUserById Get User Detail by Id

4.3.9. DelivertService
# Method Description
1 createDelivery Create new Delivery
2 createDeliveryMilestone Create new Delivery of Milestone
3 update Update Delivery

4.3.10. EducationService
# Method Description
1 addEducation Create new Education Object
2 update Update Education Object by Id
3 delete Delete Education Object by Id

4.3.11. ExtraOfferService
# Method Description
1 createExtraOffer Create new Extra Offer
2 sellerAcceptExtraOffer Seller accept Extra Offer
3 cancelExtraOffer Cancel Extra Offer

4.3.12. GalleryService
# Method Description
1 saveGallery Create new Gallery
4.3.13. LanguageService
# Method Description
1 addLanguage Create new Language Object
2 update Update Language by Id
3 delete Delete Language by Id

4.3.14. MilestoneService
# Method Description
1 addMilestoneContract Create new Milestone Contract

4.3.15. NotificationService
# Method Description
1 readNotification Change Status read notification
2 getNotifications Get List notification

4.3.16. OfferRequestService
# Method Description
1 sendOfferToBuyer Seller send Offer to buyer
2 sendOfferApplyToBuyer Seller send Offer Apply to buyer
3 getOffers Get list offer request
4 getAllOffersByPostRequest Get list offer request by post request

4.3.17. PackageService
# Method Description
1 add Create new package
2 update Update package by id
3 delete Delete packag by id

4.3.18. PostRequestService
# Method Description
1 addPostRequest Create new Post Request
2 updatePostRequest Update Post Request by Id
3 deletePostRequest Delete Post Request by Id
getPostRequestByBuyerCreat
4 Buyer view their request list created
ed
5 getTargetSeller Get list seller Potential
6 getPostRequestByCategoryId View list post request by category id
7 getPostRequestDetails View Post Request Detail
8 sellerApplyRequest Seller Apply Request
9 getListSellerApply Get List seller Apply by post request
10 getAllPostRequest Get List all post request
countTotalPostRequestByCatI
11 Count Total Post Request By Category Id
d
4.3.19. RatingService
# Method Description
1 ratingSeller Buyer Rating Seller
2 getTop3Ratings List top 3 Rating
3 getRatingsForBox Get Rating For Box

4.3.20. SellerService
# Method Description
1 getSellers Get list Seller
2 getSellerById Get Seller by Id
3 getSellerByBrandName Get Seller by Brand Name
4 updateSeller Update Seller
5 becomeSeller Buyer Change to Seller
6 getListTopSellerByRank View list seller buy rank
getListSellerBuyPostRequestI
7 Get List Seller buy Post Request Id
d

4.3.21. SkillMetaDataService
# Method Description
1 getSkillMetaBySubCategoryId Get List Skill Meta Data by Sub Category Id
2 getSkillMeta Get Skill Meta Data Response by Meta Id
3 getSkillMetaDataList Get List Skill Meta Data
4 addSkillMetaData Create new Skill Meta Data
5 update Upadate Skill Meta Data by id
6 delete Delete Skill Meta Data by id

4.3.22. SkillService
# Method Description
1 addSkill Create new skill
2 update Update skill by id
3 delete Delete skill by id
getSellerBySkillNameAndSkillLevelOrderBySel Get list seller by Skill Name and
4
lerId Skill Level order by Seller Id
5 getAllSkillBySellerId Get all skill by Seller Id
Get List seller by Skill Name and
6 getSellerBySkillNameAndSkillLevel
skill level

4.3.23. SubCategoryService
# Method Description
1 getSubCategories Get List Sub Category
2 getSubCategoriesByCategory Get List Sub Category by Category Id

4.3.24. TransactionService
# Method Description
1 getAllTransaction Get All Transaction
2 getAllTransactionByUserId Get All Transaction by User Id
3 getTransactionById Get Transaction by Id

4.3.25. UrlProfileService
# Method Description
1 addUrl Create new Url
2 update Update Url by id
3 delete Delete Url by id

4.3.26. UserService
# Method Description
1 getUsers Get list user
2 getUserProfile Get User Profile
3 resetPassword Reset Password
4 updateResetPasswordToken Update Reset Password Token
5 update Update User By Id
6 getByUserId Get User By Id
7 registerUser User Register
8 loginUser User Login
9 loginAdmin Admin Login
10 verifyRegistration Verify Registration
11 changePassword Change Password
getListUserInvitedByPostReque
12 Get List User Invited by Post Request Id
stId
13 countUserById Count total User by Id
14 banOrUnbanUser Change User Status (Ban or Unban)
15 getUserById Get User by Id
16 getUserByUserName Get User by Name

4.3.27. WalletService
# Method Description
1 getWallet User Get Wallet Response
2 saveWallet Save Wallet
5. Data & Database Design
5.1. Database Design

Table Descriptions

No Table Description

1 user - The table contains the general data of the buyer/seller


- Primary keys: id
- Foreign keys: This table doesn’t have foreign keys
2 url_profile - The table contains data about the link of the user information
- Primary keys: id
- Foreign keys:seller_id(seller.id)
3 wallet - Table contains data about wallet of user
- Primary keys: id
- Foreign keys: user_id(user.id)
4 buyer - Table containing the data about the buyer
- Primary keys: id
- Foreign keys: user_id(user.id)
5 seller - Table contains data about seller
- Primary keys: id
- Foreign keys:user_id(user.id)
6 language - Table contains data about language
- Primary keys: id
- Foreign keys: seller_id(seller.id)

7 skill - Table contains data about skill of seller


- Primary keys: id
- Foreign keys: seller_id(seller.id)

8 certificate - Table contains data about certificate of seller


- Primary keys: id
- Foreign keys: seller_id(seller.id)
9 education - Table contains data about education of seller
- Primary keys: id
- Foreign keys:seller_id(seller.id)
10 activity_type - Table contains data about
- Primary keys: id
- Foreign keys: This table doesn’t have foreign keys
11 user_activity_type - Table containing intermediate data of user and activity type
- Primary keys: (user_id,activity_type_id)
- Foreign keys: user_id(user.id), activity_type_id(activity_type.id)
12 notification - Table contains data about notification of user
- Primary keys: id
- Foreign keys:user_id(user.id)
13 post_request - Table contains data about request of buyer
- Primary keys: id
- Foreign keys:
cat_service_id(category.id),contract_idc(contract.id),sub_cat_service_id(
sub_category.id),user_id(user.id)
14 post_request_seller - Table contains data about the sellers who applied for the request
- Primary keys: (post_request_id,seller_id)
- Foreign keys: post_request_id(post_request.id),seller_id(seller.id)
15 offer_request - The table contains data about the seller's offer per request
- Primary keys: id
- Foreign keys: post_request_id(post_request.id),seller_id(seller.id)
16 box - Table contains data about service of seller
- Primary keys: id
- Foreign keys: seller_id(seller.id),sub_category_id(sub_category.id)
17 tag_name - Table contains data about tag in box service
- Primary keys: id
- Foreign keys: This table doesn’t have foreign keys
18 history_box - Table contains data about service viewing history
- Primary keys: id
- Foreign keys: This table doesn’t have foreign keys
19 gallery - The table contains data about the seller's test product in 1 service
- Primary keys: id
- Foreign keys:box_service_id(box.id)
20 package - The table contains data about the packages in the seller's service
- Primary keys: id
- Foreign keys:box_service_id(box.id)
21 contract - Table contains data about contract
- Primary keys: id
- Foreign keys:buyer_id(buyer.id),seller_id(seller.id)
22 comment - Table contains data about coment of buyer/seller
- Primary keys: id
- Foreign keys:contract_id(contract.id)
23 rating - The table contains data on buyer ratings for sellers
- Primary keys: id
- Foreign keys: seller_id(seller.id)
24 delivery - The table contains data about the seller's delivery
- Primary keys: id
- Foreign keys: contract_id(contract.id)
25 extra_offer - The table contains data about the buyer's additional request for the
contract
- Primary keys: id
- Foreign keys: contract_id(contract.id)
26 milestone_contract - Table containing data about the handover period in the contract
- Primary keys: id
- Foreign keys: post_request_id(post_request.id)
27 category - Table contains data about category
- Primary keys: id
- Foreign keys: This table doesn’t have foreign keys
28 sub_category - Table contains data about sub category
- Primary keys: id
- Foreign keys:category_id(category.id)
29 skill_meta_data - Table contains data about skills according to each subcategory of the
system
- Primary keys: id
- Foreign keys: sub_category_id(sub_caterogy.id)
30 transaction - Table contains data about transaction of user
- Primary keys: id
- Foreign keys:wallet_id(wallet.id)

V. Software Testing Documentation


1. Scope of Testing
Functional requirements and Non-functional requirements will be verified by development team

1.1. Functional requirement


No Functional Item

FR-1 Common

FR-2 User authentication

FR-3 User profile management

FR-4 Seller profile management

FR-5 Notification Management

FR-6 Service management

FR-7 Request management

FR-8 Offer management

FR-9 Order management

FR-10 Contract management

FR-11 Service rating

FR-12 User type management


FR-13 Payment

FR-14 Admin management

FR-15 User management

FR-16 Category management

FR-17 Transaction management

FR-18 Skill management

1.2. Non-Functional requirement


No Non-Functional Items

NFR-1 Security

NFR-2 Performance

NFR-3 User Interface

1.3. Test Stage

No Test Stages Description

1 Integration Test The integration test will be performed by FSM


Test team. Testers execute Test cases based
on the requirement for each function. This
testing stage focuses on specific areas of use
cases when all requirements are completed,
an integration test should be performed to
ensure all components incorporate well.

2 System Test The FSM Test team will execute System Test.
Testers will perform complete, end-to-end
system testing staged in a pre-production
environment to validate that functions and
system interfaces perform properly in the
production environment.

3 Unit test Unit Tests will be performed by FSM


development team, searches for defects in
and verifies the functioning of the software
components that are separately testable
1.4. Acceptance Criteria
● Test coverage: 100%
● Successful Test coverage: 100%

2. Test Strategy
2.1 Testing Types
2.1.1 Unit Testing
Test Objective: Make sure all method code in the program works with the function for
which it was created without any unexpected exceptions.

Technique: ❖ Tester using Junit create test cases for each method of code. Then
execute and evaluate the results.
Completion ❖ At least 100% of test cases must be executed successfully
Criteria:
❖ Test coverage is at least 100% of the entire source code
Special Unit testing must be done concurrently with coding. It is not possible to
Considerations: start unit testing without completing the method code or designing test
cases

2.1.2. Integration Testing


Test Objective: Make sure the components that are linked together work efficiently. Check
the program logic from the controller layer to the service and finally the
repository layer.

Technique: Testers create test cases according to the flow scenario that runs from
controller layer to service, repository and finally database to track expected
and actual results.

Completion ❖ At least 100% of test cases must be executed successfully.


Criteria: ❖ All modules in the system must be tested.

Special Integration testing will NOT be started in case developers have not executed
Considerations: unit testing.

2.1.3. Functional Testing


Test Objective: Ensure proper target-of-test functionality, including navigation, data entry,
processing, and retrieval.

Technique: Execute each use case, use-case flow, or function, using valid and invalid
data, to verify the following:
❖ The expected results occur when valid data is used.
❖ The appropriate error or warning messages are displayed when
invalid data is used.
❖ Each business rule is properly applied.
Completion All functional test cases have been executed to verify proper data
Criteria: acceptance, processing, and retrieval, and the appropriate implementation
of the business rules, and passed

❖ The appropriate activities will be performed when valid data is used


❖ The corresponding error/warning message mechanism is applied for
each specific case
❖ All bugs found must be fixed
Special Functional testing will NOT be started in case developers have not executed
Considerations: integration testing.

2.1.4. User Interface Testing


Test Objective: Verify the following: Navigation through the target-of-test properly
reflects business functions and requirements, including window-to-
window, field-to-field

Technique: Tester will build a test checklist for each screen. Which includes
components and the characteristics that come with that component. Check
if those components are correct with the design set out or not. The checklist
may include:

❖ Check Screen Authentication


❖ Verify all navigation
❖ Verify date field and number field format
❖ Verify object state
Completion ❖ All GUI checklists have been executed and passed.
Criteria: ❖ Any defects related to GUI are fixed

Special Not all properties for custom and third-party objects can be accessed.
Considerations:

2.2. Test Levels


Test Level
Type of Tests
Unit Integration System

Unit Test X X

Integration Test X X

Function Test X X X

User Interface test X


2.3. Supporting Tools
Purpose Tool Vendor/In-house Version
Use to view the web page, bug Google Chrome Google LLC 102.0.5005.63
logging page, etc..

Use to log bugs. Excel Microsoft 2013

Use to test API Postman Postman, Inc v9.19.0

3. Test Plan
3.1 Human Resources

Worker/Doer Role Specific Responsibilities/Comments


Create Test Plan, Test Cases (UT, IT, ST, GUIT)
- Review Test Cases (UT, IT, ST)
Nguyễn Thế Vinh Leader
- Review Test Data
- Create Test Reports
-Create Test Data and Execute Test (UT, IT, ST)
Lê Thanh Tùng Tester
-Report Test Results
-Create Test Data and Execute Test (UT, IT, ST)
Trần Xuân Sơn Tester
-Report Test Results
-Create Test Data and Execute Test (UT, IT, ST)
Võ Đức Tài Tester
-Report Test Results
-Create Test Data and Execute Test (UT, IT, ST)
Đoàn Minh Đức Tester
-Report Test Results

3.2 Test Environment

Purpose Tool Provider Version


Microsoft 2013
Manage test cases Microsoft Excel
Postman, v9.19.0
Manage and test API Postman
Inc
Run Unit test cases JUnit Junit 5
View console logs, inspect 102.0.5005.6
Chrome DevTools Google
element front-end 3

3.3 Test Milestones


Milestone Task Start Date End Date
Planning Create Test Plan 13/06/2022 14/06/2022
Iteration 1 Create and execute unit test 15/06/2022 24/06/2022
Milestone Task Start Date End Date
Create and execute integration test 15/06/2022 24/06/2022
Create and execute system test 15/06/2022 24/06/2022
Create and execute unit test 29/06/2022 15/07/2022
Iteration 2 Create and execute integration test 29/06/2022 15/07/2022
Create and execute system test 29/06/2022 15/07/2022
Create and execute unit test 20/07/2022 29/07/2022
Iteration 3 Create and execute integration test 20/07/2022 29/07/2022
Create and execute system test 20/07/2022 29/07/2022
Overall Testing Full System Testing 01/08/2022 12/08/2022
Deliver Create Test Report 13/08/2022 13/08/2022
4. Test Cases
4.1. Unit test
● Detailed test case is described in file: SWP490_G11_UnitTestCase_Ver6.xlsx
● Here is an example of unit test case:
4.2. Integration test
● Integration test are executed by testers to ensure that each function and the whole system
work properly
● Detailed test case is described in file: SWP490_G11_IntegrationTestCase_Ver1.xlsx
● Here is an example of unit test case:

4.3. System test


● System testing is testing conducted on a complete integrated system to evaluate the
system's compliance with its specified requirements
● Detailed test case is described in file: SWP490_G11_SystemTestCase.xlsx
● Here is an example of unit test case:
5. Test Reports
5.1. Unit test report

5.2. Integration test report


5.3. System test report

5.4. Defect Logs


We use Excel to log issues. Members will check easier and can merge code following by that issue

VI. Release Package & User Guides


1. Deliverable Package
No. Deliverable Item Description
1 Source Codes Project Source Codes
2 Final Report Document Final Report Document of project
3 Test Cases Document Unit Test, Integration Test, System Test
4 Slide Present slide

2. Installation Guides
2.1 System Requirements
● Amazon web service (all install for running backend in ec2 - Amazon Elastic Compute Cloud -
including JDK 11)
● Config domain record in AWS with route 53
2.2 Installation Instruction
● Create .env file in frontend folder and config your server url like file .env.example

● Config application.yml for building and running jar file (picture-1)


● If using server on running just push file jar on ec2 and run => java -jar capstoneproject-0.0.1-
SNAPSHOT.jar
● If using for fix and update, clone from github and add config in file yml with your owner
3. User Manual
3.1 Overview
The website has an intuitive interface, language, and features optimized for the Vietnamese market.
The operations are simple and easy to use, so users do not have to spend too much time learning
how to use them. Services give users a variety of options. Simple ordering operation, shortening
time, saving costs for buyers. The post a request feature helps connect sellers and share jobs with
each other, a management mechanism helps ensure the interests of buyers and sellers.

It is expected that soon, FSM will become the largest freelance job service website in Vietnam,
connecting millions of buyers and sellers.

Below is a detailed guide on how to use website.

3.2 User authentication


3.2.1. Register <Role: Guest>
Register an account to become an FSM user and use more features of the site

● Step 1: Access the Jovinn-FSM website at https://jovinn-fsm.web.app/


● Step 2: Click “Đăng kí”

● Step 3: The registration screen appears. Fill in the required information:


o Tên đăng nhập
o Mật khẩu
o Xác nhận mật khẩu
o Họ
o Tên
o Email
Then press the "Đăng ký" button to submit an account requesting registration
● Step 4: A successful registration message will appear. You access your mailbox to
complete the procedure to create your new account
3.2.2. Login <Role: Guest>
● Step 1: After you have successfully registered for an account, go back to the homepage and
press "Đăng nhập" to proceed to log in to the system.

● Step 2: The login screen appears, enter your account information correctly:

o Tên đăng nhập/Email

o Mật khẩu

Then press the "Đăng nhập" button to perform the functions according to your account permissions

3.2.3. Forgot password <Role: Buyer/Seller>


If you forgot your password, you can use our forgot password feature
● Stept 1: Click “Quên mật khẩu” in Login screen

● Step 2: A new screen will appear, input:


o Email address used to register your account to reset your password
3.2.4. Logout <Role: Buyer/Seller>
You can log out of your account at any time when you don't need to use it

● Step 1: Click Avatar then click “Đăng xuất”

3.3 User profile management


3.3.1.View and Update user profile <Role: Buyer/Seller>
After successful login, you can view and update your personal information
● Step 1: Click Avatar then click “Thông tin cá nhân”

● Step 2: Personal information screen appears you can change your information:
o Họ
o Tên
o Giới tính
o Số điện thoại
o Ngày sinh
o Quốc gia
o Tỉnh/Thành phố
o Avatar
Then press "Cập nhật" to save the changes
3.3.2. Change password <Role: Buyer/Seller>
To change the password for your account, do the following:

● Step 1: Click “Đổi mật khẩu”

● Step 2: A pop-up window, you need to enter your information correctly:

o Mật khẩu cũ

o Mật khẩu mới

o Xác nhận mật khẩu


Then press "Xác nhận" to save the new password information

3.4 User Type Management


3.4.1. Become Seller <Role: Buyer>
The steps to register to become a seller are very easy

● Step 1: Click “Trở thành người bán”

● Step 2: Read and accept our terms


● Step 3: Input/Choose your advanced information:
o Lời giới thiệu
o Tên thương hiệu(Nếu có)
o Kỹ năng
o Tiêu đề học vấn
o Trường
o Chuyên ngành
o Ngày bắt đầu
o Ngày tốt nghiệp
o Nội dung chứng chỉ
o Tên chứng chỉ
o Liên kết(Nếu có)
Then press the "Lưu thông tin" button.
3.4.2. Switch to Buyer
After registering as a successful seller, you can flexibly switch these 2 roles for more experience.

● Step 1: To switch to the Buyer role, click "Chuyển người mua"

3.4.3. Switch to Seller


After registering as a successful seller, you can flexibly switch these 2 roles for more experience.
● Step 1: To switch to the Seller role, click "Chuyển người bán"

3.5 Service management


3.5.1. View service <Role: Guest/Buyer>
Boxservice is our very interesting feature, you can view them very easily

● Step 1: Click on the category to see the service available in each of those categories
In addition, the website also displays a list of services that you have clicked to view before

● Step 2: Click on any service to see detailed information


3.5.2. Search service <Role: Guest/Buyer>
● Step 1: Input keywords to search the search box then click icon search

Matching search results will be displayed at the bottom. To make your search more detailed,
you can use filters with criteria such as: Category, high, lowest price, purchase...
3.5.3. Create service <Role: Seller>
Seller create box service to receive orders from buyers

● Step 1: Click “Tạo dịch vụ”

● Step 2: The service creation screen appears the first step is an overview. You must Input/
Choose:
o Tiêu đề
o Mô tả
o Danh mục
o Danh mục con

Then press the "Tiếp tục" button to move to the next step
 Step 3: Create Package, you must input:
o Tiêu đề
o Sản phẩm bàn giao
o Số ngày giao
o Chi phí
o Phí hủy hợp đồng

Then press the "Tiếp tục" button to move to the next step

In addition to the default basic package, you can choose to use more advanced and premium
packages by clicking "Thêm gói nâng cao", and “ Thêm gói cao cấp”
You can also fit packages by clicking "Xóa gói nâng cao" and “Xóa gói cao cấp”
 Step 4: Test product, upload your sample product to give buyers more information. You can
upload 1 or more photos, can upload document files
 Step 5: Finally, confirm the service creation

o Create and open a service to receive orders from buyers instantly

o Create and close services to have more time to prepare before accepting orders
from buyers
3.5.4. View detail Service <Role: Seller>
 Step 1: In Homepage seller, you click a service

 Step 2: The service detail screen will be displayed


3.5.5. Update service status <Role: Seller>
 Step 1: In service detail screen, you click "Tạm dừng" to close. The service will only be visible
to you

3.5.6. Update service status <Role: Seller>


Step 1: In service detail screen, you click "Mở" to open, service will be visible to all buyers
3.5.7. Update service <Role: Seller>
 Step 1: In service detail screen, you click “Sửa” to update service

 Step 2: An overview window will be displayed, you can change the desired information. Then
press "Cập nhật" to save the changed information
3.5.8. Delete service <Role: Seller>
 Stept 1: In service detail screen, click “Xóa” to delete box service

3.6 Request management


3.6.1. Create request <Role: Buyer >
● Step 1: Click “Tạo yêu cầu”
● Step 2: The request creation screen appears, you need to enter/select all information:
o Tiêu đề
o Mô tả
o Chọn danh mục
o Chọn danh mục con
o Chọn kỹ năng
o Trình độ người bán
o File đính kèm(Nếu có)
o Số giai đoạn
o Ngày bắt đầu
o Ngày kết thúc
o Sản phẩm bàn giao
o Chi phí
o Phí hủy hợp đồng
Then press "Gửi yêu cầu" to make a request to the seller




 Step 3: After pressing "Gửi yêu cầu", you can send an invitation to the seller,
choose”Có” or “Không”
 Step 4: If select “Có ”A pop-up suggesting Sellers matching your requirements

3.6.2. View request <Role: Seller >


● Step 1: Click “Yêu cầu”
● Step 2: Click category

● Step 3: Select the request you want to see the details of, then Click “Chi tiết”
● Step 4: The screen shows the details of the request

3.6.3. Apply request <Role: Seller >


● Step 1: In Request detail, click “Ứng tuyển”
3.6 Offer management
3.6.1. Create offer <Role: Seller >
● Step 1: In request detail click “ Tạo đề nghị”
● Step 2: Input information:
o Mô tả
o Số ngày giao
o Chi phí
o Phí hủy hợp đồng
The click “Gửi đề nghị”

3.6.1. View offer <Role: Buyer >


● Step 1: In request detail, click “Danh sách đề nghị”
● Step 2: In list offer, click “chi tiết”

3.7 Order management


3.7.1. Create order <Role: Buyer >
● Step 1: In Service detail click “Chọn gói này”

● Step 2: Input request then click “Tạo đặt hàng”


 Step3: To complete the creation to the seller, click "Thanh toán"

3.7.2. View order <Role: Buyer >


● Step 1: Click “Quản lí đặt hàng”
● Step 2: In order list, click “Chi tiết”

● Step 3: View order detail


3.7.3. View order <Role: Seller >
● Step 1: In hompage seller click “Đơn đặt hàng”

● Step 2: In list order, click “Chi tiết”

● Step 3: View detail of order


3.7.4. Accept order <Role: Seller >
● Step 1: In the details screen of the order press " Duyệt đơn"

Accepted orders will be converted into contracts

3.7.5. Reject order <Role: Seller >


● Step 2: In the details screen of the order press "Từ chối"
3.8 Contract management
3.8.1. View list contract <Role: Buyer >
● Step 1: Click “Quản lý hợp đồng”

● Step 2: Click “Chi tiết”

● Step 3: View detail of contract


3.8.2. Comment contract <Role: Buyer >
● Step 1: Input message then click “Gửi”

3.8.3. Extra offer contract <Role: Buyer >


● Step 1: Click “Thêm đề nghị”
● Step 2: Input request:
o Tiêu đề
o Mô tả
o Số ngày
o Chi phí
The click “Tạo” to create Extra offer

3.8.4. Cancel Extra offer contract <Role: Buyer >


● Step 1: Click “Hủy bỏ”
3.8.5. Accept Extra offer contract <Role: Seller >
● Step 1: Click “Chấp nhận”

3.8.6. Upload delivery <Role: Seller >

● Step 1 : Click “tải lên bàn giao”

● Step 2 : Input mô tả then click “Xác nhận”


3.8.7. Confirm delivery <Role: Buyer >

● Step 1: Check delivery


● Step 2: Click “Xác nhận bàn giao”

3.8.8. Report contract <Role: Seller>


● Step 1: Click icon flag

3.9 Wallet management


3.9.1. View wallet <Role: Buyer/Seller>
● Step 1: Click “Quản lí ví”

● Step 2: View wallet


3.9.2. Top up wallet <Role: Buyer/Seller>
● Step 1: Click “Nạp tiền”

● Step 2: Input amount want to top up

● Step 3: Make payment via Paypal system


3.10. Homepage admin management <Role: Admin>
● Step 1: Cccess login screen for admin

● Step 2: After successful login with admin rights, admin homepage will be displayed
3.10. User management <Role: Admin>
3.10.1. View list user <Role: Admin>
 Step 1: On the admin home page, click "Danh sách người dùng thành viên"

 Step 2: List user will be displayed


3.10.2. View detail user <Role: Admin>
 Step 1: Click “Xem”

 Step 2: User details will be displayed


3.10.3. Ban user <Role: Admin>
 Step 1: Click “Cấm”

3.10.4. Ban user <Role: Admin>


 Step 1: Click “Bỏ cấm”
3.10.5. View list admin<Role: Admin>
 Step 1: Click “Quản trị viên”

 Step 2: List of admin will be displayed


3.10.5. View detail admin<Role: Admin>
 Step 1: Click “Xem”

 Step 2: Screen detail of admin will be displayed


3.10.6. Delete admin<Role:Admin>
 Step 1: Click “Xóa”

3.11. Category management <Role: Admin>


3.11.1 View list category
 Step 1: Click”Danh mục”
 Step 2: List of category will be displayed

3.11.2. Create new category


 Step 1: Click “Tạo mới”
 Step 2: Innput:
o Tên danh mục

Then click “Tạo mới”

3.11.3 View list subcategory<Role:Admin>


 Step 1: In the list of categories screen, select a category then press Xem danh mục con“
 Step 2: List of subcategory will be display

3.11.4. Create new a subcategory<Role:Admin>


 Step 1: Click “Tạo mới”
 Step 2: Input:
o Tên danh mục con

Then click “Tạo mới”

You might also like