An overview of FU Marketplace Project includes the team, business analysis, development plans, technologies used, the architecture design, use cases, testing plans, and the deployment strategy.
8. Background
Can not filter shop:
⢠By Dorm (e.g. Dom A, Dom B, Dom C)
⢠By Product Category
Can not search with keyword:
⢠Shopâs name
⢠Sellerâs name
⢠Productâs Name
⢠âŚ
8
17. qďą Easy shop searching
qďą Intuitive order management
qďą Powerful notification system
qďą Production Ready!
Main Objectives
17
18. Scope
In scope
qďą Shop searching and filtering
qďą Shop page
qďą Order management
qďą Report bad order
qďą Shop review
qďą Notification
qďą Shop management
qďą Shop analytics
qďą Admin dashboard
qďą Multiple languages support
Out of scope
qďą Suggestion
qďą Fully functional layout for mobile browser
qďą Native mobile app
qďą Payment system
qďą Chat system
qďą Feedback for website system
qďą Looking-for-shipper system
qďą Inventory Management
qďą Optimal shop ranking
18
22. ⢠Time: 8 hours / day, 5 days / week
⢠Location: Room C203, FPT University Hoa Lac
⢠Communication:
⢠Supervisor meeting: Once a week
⢠Teambuilding: Once a month
Teamwork
22
24. Risk Management
Name Prevention Correction Status
Internet interruptions
All developers have to set up the isolated development
environment and have an offline copy of the
documentation. Using various online communication
tools and creating face-to-face meeting at any
possible time.
Always make sure that there are alternative ways to
connect to the internet, such as: using VPN or 3G.
Closed
Illness or absence of team
members
Member has to notice to the team about absence
period and the plan of how to keep up with the work
process.
Ensure that the absence of a member wonât affect
others and always have plans to deal with this
problem.
Closed
Business problem
Any ideas are welcome but members have to discuss
with others and always focus on the reality and
possibility.
Make sure the business logic of any ideas is
carefully analyzed. Closed
Requirement changed
Team members should carefully analyze and define
requirements. Each new requirement has to be
reviewed by all team members and supervisor.
If there is a âmust be changedâ requirement, all
team members must join the meeting to decide
whether it should be implemented or not.
Closed
Miscommunication
Everything has to be documented. Any team member
has to attempt to express his/her opinion clearly and
carefully.
Make sure any miscommunication has to be
resolved. Closed
New technology
Choosing technology based on memberâs
qualification. All team members must nurture by self-
study.
When someone chooses a new technology, he/she
has to explain to all team members about the
decision.
Closed
24
25. Project Tools
Docker Draw.io Pivotal Tracker
WebStorm
2016.2.2
GitLab
Astah Pro
v7.0.0
Google Chrome
v52
Microsoft Office
2016
Postman
Visual Studio
Code v1.3.1
25
29. User
Sign in with Google account
View shop feed
Search shop
Filter shop
View shop
Place order
View orders
Cancel an order
View reject reason of an order
Review shop
29
30. User
Sign in with Google account
View shop feed
Search shop
Filter shop
View shop
Place order
View orders
Cancel an order
View reject reason of an order
Review shop
30
31. User
Sign in with Google account
View shop feed
Search shop
Filter shop
View shop
Place order
View orders
Cancel an order
View reject reason of an order
Review shop
31
32. User
Sign in with Google account
View shop feed
Search shop
Filter shop
View shop
Place order
View orders
Cancel an order
View reject reason of an order
Review shop
32
33. User
Sign in with Google account
View shop feed
Search shop
Filter shop
View shop
Place order
View orders
Cancel an order
View reject reason of an order
Review shop
33
34. User
Sign in with Google account
View shop feed
Search shop
Filter shop
View shop
Place order
View orders
Cancel an order
View reject reason of an order
Review shop
34
35. User
Sign in with Google account
View shop feed
Search shop
Filter shop
View shop
Place order
View orders
Cancel an order
View reject reason of an order
Review shop
35
36. User
Sign in with Google account
View shop feed
Search shop
Filter shop
View shop
Place order
View orders
Cancel an order
View reject reason of an order
Review shop
36
37. User
Sign in with Google account
View shop feed
Search shop
Filter shop
View shop
Place order
View orders
Cancel an order
View reject reason of an order
Review shop
37
38. User
Sign in with Google account
View shop feed
Search shop
Filter shop
View shop
Place order
View orders
Cancel an order
View reject reason of an order
Review shop
38
39. User
Sign in with Google account
View shop feed
Search shop
Filter shop
View shop
Place order
View orders
Cancel an order
Review shop
View reject reason of an order
39
40. User
Open a new ticket
View all submitted tickets
View a ticketâs detail
Close a ticket
Reopen a ticket
Update account information
Request to become seller
Change language interface
Sign out
View notification
40
41. User
Open a new ticket
View all submitted tickets
View a ticketâs detail
Close a ticket
Reopen a ticket
Update account information
Request to become seller
Change language interface
Sign out
View notification
41
42. User
Open a new ticket
View all submitted tickets
View a ticketâs detail
Close a ticket
Reopen a ticket
Update account information
Request to become seller
Change language interface
Sign out
View notification
42
43. User
Open a new ticket
View all submitted tickets
View a ticketâs detail
Close a ticket
Reopen a ticket
Update account information
Request to become seller
Change language interface
Sign out
View notification
43
44. User
Open a new ticket
View all submitted tickets
View a ticketâs detail
Close a ticket
Reopen a ticket
Update account information
Request to become seller
Change language interface
Sign out
View notification
44
45. User
Open a new ticket
View all submitted tickets
View a ticketâs detail
Close a ticket
Reopen a ticket
Update account information
Request to become seller
Change language interface
Sign out
View notification
45
46. User
Open a new ticket
View all submitted tickets
View a ticketâs detail
Close a ticket
Reopen a ticket
Update account information
Request to become seller
Change language interface
Sign out
View notification
46
47. User
Open a new ticket
View all submitted tickets
View a ticketâs detail
Close a ticket
Reopen a ticket
Update account information
Request to become seller
Change language interface
Sign out
View notification
47
48. User
Open a new ticket
View all submitted tickets
View a ticketâs detail
Close a ticket
Reopen a ticket
Update account information
Request to become seller
Change language interface
Sign out
View notification
48
49. Seller
View own shop dashboard
Update shop information
Update shop opening status
Update shop ship places
Change shop avatar
Change shop cover
Add item to shop
Delete an item
Update an item information
Update an item sale status
49
50. Seller
View own shop dashboard
Update shop information
Update shop opening status
Update shop ship places
Change shop avatar
Change shop cover
Add item to shop
Delete an item
Update an item information
Update an item sale status
50
51. Seller
View own shop dashboard
Update shop information
Update shop opening status
Update shop ship places
Change shop avatar
Change shop cover
Add item to shop
Update an item sale status
Delete an item
Update an item information
51
52. Seller
View own shop dashboard
Update shop information
Update shop opening status
Update shop ship places
Change shop avatar
Change shop cover
Add item to shop
Update an item sale status
Delete an item
Update an item information
52
53. Seller
View own shop dashboard
Update shop information
Update shop opening status
Update shop ship places
Change shop avatar
Change shop cover
Add item to shop
Update an item sale status
Delete an item
Update an item information
53
54. Seller
View active orders
View all orders
Accept an order
Start shipping an order
Finish an order
View shop statistics
Reject an order
Abort an order
54
55. Seller
View active orders
View all orders
Accept an order
Start shipping an order
Finish an order
View shop statistics
Reject an order
Abort an order
55
56. Seller
View active orders
View all orders
Accept an order
Reject an order
Start shipping an order
Abort an order
Finish an order
View shop statistics
56
57. Seller
View active orders
View all orders
Accept an order
Reject an order
Start shipping an order
Abort an order
Finish an order
View shop statistics
57
58. Seller
View active orders
View all orders
Accept an order
Reject an order
Start shipping an order
Abort an order
Finish an order
View shop statistics
58
59. Seller
View active orders
View all orders
Accept an order
Start shipping an order
Finish an order
View shop statistics
Reject an order
Abort an order
59
60. Administrator
Sign in
Sign out
Change password
Change language interface
Update user information
Update user role
Ban a user
Remove ban from a user
View all users
60
61. Administrator
Sign in
Sign out
Change password
Change language interface
Update user information
Update user role
Ban a user
Remove ban from a user
View all users
61
62. Administrator
Sign in
Sign out
Change password
Change language interface
Update user information
Update user role
Ban a user
Remove ban from a user
View all users
62
63. Administrator
Sign in
Sign out
Change password
Change language interface
Update user information
Update user role
Ban a user
Remove ban from a user
View all users
63
64. Administrator
View all shops
Update shop contact information
Update shop opening status
Update shop public status
Create a new promotion campaign
Ban shop
Remove ban from shop
Update shop ship places
Update shop avatar
Update shop cover
64
65. Administrator
View all shops
Update shop contact information
Update shop opening status
Update shop public status
Create a new promotion campaign
Ban shop
Remove ban from shop
Update shop ship places
Update shop avatar
Update shop cover
65
66. Administrator
View all shops
Update shop contact information
Update shop opening status
Update shop public status
Create a new promotion campaign
Ban shop
Remove ban from shop
Update shop ship places
Update shop avatar
Update shop cover
66
67. Administrator
View all shop promotion campaigns
Update a shop promotion campaign
View all shop opening requests
Accept shop opening request
Reject shop opening request
Close a ticket
View all tickets
Start investigating a ticket
67
68. Administrator
View all shop promotion campaigns
Update a shop promotion campaign
View all shop opening requests
Accept shop opening request
Reject shop opening request
Close a ticket
View all tickets
Start investigating a ticket
68
69. Administrator
View all shop promotion campaigns
Update a shop promotion campaign
View all shop opening requests
Accept shop opening request
Reject shop opening request
Close a ticket
View all tickets
Start investigating a ticket
69
70. Administrator
View all shop promotion campaigns
Update a shop promotion campaign
View all shop opening requests
Accept shop opening request
Reject shop opening request
Close a ticket
View all tickets
Start investigating a ticket
70
71. Administrator
View all shop promotion campaigns
Update a shop promotion campaign
View all shop opening requests
Accept shop opening request
Reject shop opening request
Close a ticket
View all tickets
Start investigating a ticket
71
72. Administrator
View all shop promotion campaigns
Update a shop promotion campaign
View all shop opening requests
Accept shop opening request
Reject shop opening request
Close a ticket
View all tickets
Start investigating a ticket
72
73. Usability
Performance
⢠Fully request restricted by token
⢠All requests are encrypted by HTTPS
Non-functional Requirement
Scalability
Extensibility
Security
73
74. ⢠Strictly follow coding principles and use ESLint to
verify code convention
⢠Automation test including Unit Tests and
Integration Tests
Non-functional Requirement
Security
Usability
Performance
Scalability
ExtensibilityExtensibility
74
75. ⢠Apply Microservices architecture
⢠Using HAProxy for load balancer and proxy server
⢠Using ELK Stack to monitor and alert service
Non-functional Requirement
Security
Usability
Performance
Scalability
Extensibility
Scalability
75
76. ⢠Implement Redis to cache frequently use requests
⢠Implement background job for external requests,
heavy processing requests
⢠Create indexes for PostgreSQL
Non-functional Requirement
Security
Usability
Performance
Scalability
Extensibility
Performance
76
77. ⢠Most of actions can be accomplished within 3
clicks.
⢠Provide notification-pushing system to help
buyer/seller aware about his orderâs status changes
even he/she close web application
⢠The shops feed should always be updated by using
real-time update over WebSocket
Non-functional Requirement
Security
Usability
Performance
Scalability
Extensibility
Usability
77
81. FUM Frontend Design
Single page application
A single-page application (SPA) is a web application or web site that fits on a single web page with the
goal of providing a more fluid user experience similar to a desktop application.
Technical approaches
81
82. FUM Frontend Design
Redux architecture
o Redux architecture revolves around a strict
unidirectional data flow.
o All data in an application follows the same
lifecycle pattern, making app logic more
predictable and easier to understand.
o Three fundamental principles:
o Single source of truth
o State is read-only
o Changes are made with pure functions
Store
View Action
82
84. FUM Backend Design
Use
 Case
Microservices architecture
⢠Redis for caching
⢠Background jobs service
⢠Elasticsearch for searching, filtering
⢠Socket.IO for real-time message
transporting
⢠Amazon S3 for storing images
⢠OneSignal for Website Push
⢠Mailgun for sending email
84
86. Use
 Case
Database Design â Elasticsearch
analyzer:
folding:
tokenizer: "standard",
filter:["lowercase", "asciifolding"]
:
 Auto
 created
 field
86
87. Database Design â Elasticsearch
Now
 this
 shop
 can
 be
 search
 by:
Â
-Ââ bĂşn chả
-Ââ bun
 cha
-Ââ bĂşn cha
-Ââ bun
 chả
87
89. Use
 Case
Why two databases?
Shop Feed data modeling on SQL Database
89
90. Use
 Case
Why two databases?
⢠Join 6 tables to get summary information of a
shop.
⢠Do full-text search across many fields of
different tables:
⢠Shopâs name
⢠Shopâs description
⢠Itemsâ name
⢠Itemsâ description
⢠Sellerâs name
⢠Filter shop by at least 2 fields of 2 tables:
ShipPlace and Itemsâ Category
⢠Sort shops by some fields: opening status,
average rating,âŚ
Ă¨ď¨ Difficult to accomplish and very low
efficiency to do on Relational Database
System Shop Feed data modeling on SQL Database
90
91. Shop search query
⢠Easily to search across multiple fields with
multi_match
⢠Rank the result with individual field boost
⢠Auto correction with fuzziness query
⢠Calculate aggregation (count the number of
shops in each category)
name:
 2
name.folded:
 1
description:
 2
description.folded
seller.fullName:
 2
seller.fullName.folded:
 1
items.name:
 10
items.name.folded:
 5
items.description:
 10
items.description.folded:
 5
91
98. FUM - Backend FUM-Front-end
and whole project
Â§ď§ Lack of UI Â§ď§ UI
Â§ď§ Unit testing and API testing Â§ď§ Integration testing
Â§ď§ Business logic
Â§ď§ Database constraint
Â§ď§ User Experience
Â§ď§ User Interface
Â§ď§ Backend Development team Â§ď§ Tester
Â§ď§ Automation testing Â§ď§ Manual testing
Test Strategy
98
99. Testing Tools
Chrome and Chrome Developer Tools: Used for test
size of web page, size of component on page and
view log or inspect element
Pivotal Tracker: Manage bug and task
(www.pivotaltracker.com).
Microsoft Excel: Manage test case
99
100. Testing Environment
59
Use
 Case
Software: Google Chrome 52.0
Hardware:
- Windows 7 Professional 32-bit, Service Pack 1
- IntelŽ Core⢠i3
- Install memory (RAM) : 4.00GB
100
101. Testing Tools - Backend
Mocha: JavaScript test framework running on Node.js and
in the browser
Sinon.js: standalone test spies, stubs and mocks for
JavaScript, to assert result at variable level.
Chaijs: Chai is a BDD / TDD assertion library for node, to
help assertion result in a test
Artillery: a modern load-testing framework, support HTTPS,
WebSockets, Scriptable, HTML reports.
101
106. Test Case Sample
59
Use
 Case
Normal
 Flow
1. Login to FUM System.
2. Click to âAccountâ.
3. Change
 phone
 number
4. Click to âSaveâ button
Alternative
 Flow
1. Login to FUM System.
2. Click to âAccountâ.
3. Click
 to
 button
106
110. Log bugs process
59
Use
 Case
1. Tester or developer detects defect
Ă ď Log bug on PivotalTracker Ă ď assign to related developer.
2. Developer START fix bug
Ă ď Change status of bug to DELIVERED and assign to tester again
3. Tester check bug again
⢠If bug fixed, requester ACCEPT bug
⢠If bug didnât fixed, REJECT bug and re-assign to developer, developer RESTART fix bug and flow
to step 2
110
112. Test Report
59
Use
 Case
Test Case
Stage 1 Stage 2-1 Stage 2-2
Final
Pass Fail Pass Fail Pass Fail
Client
User 70 16 158 6 164 0 164
Seller 65 7 90 21 111 0 111
Admin 140 8 149 10 159 0 159
GUI Test Case 12 2 12 0 12 0 12
Total all Test Case 287 129 409 41 446 0 446
112
113. Test Report - Automation test
59
Use Case
Test case
Phase 1 Phase 2
Final
Pass Fail Pass Fail
API Test - User 46 0 93 0 93
API Test - Admin 52 0 67 0 67
API Test - Seller 58 0 91 0 91
Unit test - Library 0 0 8 0 8
Unit test - Middleware 6 0 6 0 6
Unit test - Model 43 0 87 0 97
Total all test case 205 0 352 0 352
Coverage
Statements 85.32% 86.99% 86.99%
Branches 73.12% 74.38% 74.38%
Functions 96.13% 94.32% 94.32%
Lines 90.34% 87.55% 87.55%
113