Xây dựng các chức năng chính của một mạng xã hội hẹn hò như: Nhắn tin, call, đăng bài, bình luận, theo dõi người dùng, tìm kiếm, lọc đối tượng hẹn hò, gợi ý hẹn hò, báo cáo người dùng… +
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
NGÔ ĐỨC QUANG HOÀNG THÙY TRANG
KHÓA LUẬN TỐT NGHIỆP
MẠNG XÃ HỘI HẸN HÒ SOCIAL NETWORKING FOR DATING
KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM
TP HỒ CHÍ MINH, 2021
Trang 2ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
NGÔ ĐỨC QUANG – 16520995 HOÀNG THÙY TRANG – 16521277
KHÓA LUẬN TỐT NGHIỆP
MẠNG XÃ HỘI HẸN HÒ SOCIAL NETWORKING FOR DATING
KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM
GIẢNG VIÊN HƯỚNG DẪN ThS HUỲNH NGUYỄN KHẮC HUY
TP HỒ CHÍ MINH, 2021
Trang 3THÔNG TIN HỘI ĐỒNG CHẤM KHÓA LUẬN TỐT NGHIỆP
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số
……… ngày ……… của Hiệu trưởng Trường Đại học Công nghệ Thông tin
Trang 4LỜI CẢM ƠN
Sau hơn 4 năm học tập và rèn luyện tại Trường Đại học Công nghệ Thông tin, được
sự tận tình giảng dạy và giúp đỡ của quý thầy cô, đặc biệt là quý thầy cô của khoa Công nghệ Phần mềm, chúng em đã gặt hái được rất nhiều kiến thức nền tảng bổ ích,
có thể áp dụng vào luận văn cũng như áp dụng trong những chặng đường tiếp theo sau này
Chúng em xin chân thành cảm ơn quý thầy cô của trường Đại học Công nghệ Thông tin nói chung, quý thầy cô của khoa Công nghệ Phần mềm nói riêng, và đặc biệt là thầy Huỳnh Nguyễn Khắc Huy đã tận tình hướng dẫn và đóng góp ý kiến để chúng
em có thể hoàn thành khóa luận này một cách tốt nhất
Bên cạnh đó, nhóm xin gửi lời cảm ơn đến các bạn cùng lớp đã có những lời góp ý, động viên để nhóm có thêm động lực thực hiện khóa luận trong khoảng thời gian khó khăn này
Trong quá trình thực hiện đề tài Chúng em đã sử dụng kiến thức nền tảng đã tích lũy được từ việc học trên trường đồng thời kết hợp với quá trình học hỏi và nghiên cứu những kiến thức mới nhằm hoàn thành khóa luận tốt nghiệp một cách tốt nhất Tuy nhiên, trong quá trình thực hiện chúng em vẫn không thể tránh khỏi những thiếu sót
Vì vậy, chúng em rất mong nhận được những đóng góp quý báu từ quý Thầy Cô nhằm hoàn thiện kiến thức mà chúng em đã học tập trong suốt những năm đại học Đó cũng
là hành trang để tác giả thực hiện tiếp các đề tài trong tương lai
Sau cùng, nhóm em xin kính chúc quý Thầy/ Cô thật dồi dào sức khỏe, niềm tin để tiếp tục thực hiện sứ mệnh cao đẹp của mình là truyền đạt kiến thức cho thế hệ mai sau
Thành phố Hồ Chí Minh, ngày 15 tháng 01 năm 2021
Ngô Đức Quang Hoàng Thùy Trang
Trang 5ĐỀ CƯƠNG CHI TIẾT
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Thời gian thực hiện: Từ ngày 07/09/2020 đến ngày 15/01/2021
Sinh viên thực hiện: Ngô Đức Quang - 16520995, Hoàng Thùy Trang - 16521277 Nội dung đề tài:
Hiện nay với sự phát triển của internet và mạng xã hội, con người có thêm những phương tiện để giao tiếp, trao đổi, chia sẻ thông tin, hình ảnh video mọi lúc mọi nơi
mà không bị cản trở bởi yếu tố không gian địa lý Bên cạnh đó hẹn hò trực tuyến nổi lên đã giúp cho việc tìm kiếm người yêu trở lên thuận tiện hơn lúc nào hết, hẹn hò trực tuyến giúp tiết kiệm thời gian và công sức, gặp gỡ những người hoàn toàn mới, đây cũng là 1 cách để tìm hiểu trước về đối phương xem có hợp với bản thân không Trong phạm vi đề tài nhóm chúng em quyết định xây dựng mạng xã hội cho giới trẻ nhằm hỗ trợ người dùng kết nối, kết đôi với nhau
Phương pháp:
Làm việc theo nhóm, bám theo kế hoạch đã đặt ra, họp nhóm 2 lần 1 tuần, báo cáo hàng tuần
Kết quả mong đợi:
Xây dựng thành công mạng xã hội cho giới trẻ với các tính năng như:
Người dùng có thể dễ dàng tìm kiếm theo dõi người dùng, một người bạn đời, bạn tình, một cuộc hẹn bình thường, đối tượng hẹn hò phù hợp với mình
Trang 6Người dùng có thể bắt đầu tìm kiếm và kết nối với nhiều đối tượng phù hợp gần khu vực bạn sống hoặc ở bất cứ nơi đâu, họ chỉ cần chọn khoảng cách và giới hạn độ tuổi những người mình muốn kết bạn
Người dùng có thể nhắn tin, call, đăng bài, bình luận, chia sẻ thông tin, theo dõi người dùng
3
Phân tích, thiết kế, lên kế hoạch:
Phân tích bài toán, thiết kế giao diện, cơ sở dữ liệu
21/09/2020 – 05/10/2020
4
Xây dựng:
- Xây dựng cơ sở dữ liệu: mysql
- Back-end: GraphQL, Python/Django, Rust, Golang
- Front-end: Reactjs + Redux + Typescript
Các bước thực hiện:
06/10/2020 – 30/11/2020
Trang 7- Xây dựng modules CRM (Customer Relationship
Management) quản lý các nghiệp vụ của người dùng trên
mạng xã hội cơ bản
- Xây dựng modules Chat management quản lý tương tác
trò chuyện giữa người dùng trực tuyến
- Xây dựng modules Dating quản lý các nghiệp vụ match
user theo yêu cầu kết bạn của người dùng
27/12/2020
7 Viết báo cáo: Tổng kết hoàn thiện toàn bộ nội dung cho
báo cáo cuối kỳ
28/12/2021 – 15/01/2021
Ngô Đức Quang
SV2
Hoàng Thùy Trang
Trang 8MỤC LỤC
TÓM TẮT KHÓA LUẬN 1
CHƯƠNG 1: MỞ ĐẦU 2
1.1 Dẫn nhập 2
1.2 Mục tiêu 2
1.3 Đối tượng 3
1.4 Nội dung thực hiện 3
1.5 Phạm vi hệ thống 3
1.6 Kết quả dự kiến 4
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 5
2.1 FrontEnd 5
2.1.1 NextJS 5
2.1.2 ReactJS 5
2.1.3 TypeScript 8
2.2 BackEnd 9
2.1.4 Python Django 9
2.1.5 ExpressJS 10
2.3 Kiến trúc Microservice 11
CHƯƠNG 3: PHÂN TÍCH THIẾT KẾ HỆ 15
3.1 Phân tích thiết kế hệ thống 15
3.1.1 Các tác nhân hệ thống 15
3.1.2 Các Chức năng hệ thống 16
3.1.3 Biểu đồ usecase 22
Trang 9a) Biểu đồ usecase toàn hệ thống 22
b) Biểu đồ usecase user 23
c) Biểu đồ usecase admin 24
d) Đặc tả usecase 24
3.1.4 Biểu đồ sequence 33
a) Biểu đồ sequence đăng nhập 33
b) Biểu đồ sequence đăng ký 34
c) Biểu đồ sequence Thay đổi mật khẩu 35
d) Biểu đồ sequence quên mật khẩu 36
e) Biểu đồ sequence Story 37
f) Biểu đồ sequence bài đăng 38
g) Biểu đồ sequence tương tác bài đăng 39
h) Biểu đồ sequence theo dõi người dùng 39
i) Biểu đồ sequence trò chuyện 40
j) Biểu đồ sequence gọi thoại 41
k) Biểu đồ sequence hẹn hò 42
l) Biểu đồ sequence chỉnh sửa thông tin cá nhân 43
3.2 Thiết kế cơ sở dữ liệu 44
3.2.1 Tổng quan cơ sở dữ liệu 45
3.3 Thiết kế giao diện 54
3.3.1 Thiết kế giao diện trên figma 54
3.3.2 Danh sách các màn hình 55
3.3.3 Mô tả chi tiết mỗi màn hình 56
a) Giao diện đăng ký 56
Trang 10b) Giao diện quên mật khẩu 58
c) Giao diện đăng nhập 59
d) Giao diện trang chủ 60
e) Giao diện Chi tiết bài đăng 63
f) Giao diện thông tin cá nhân 65
g) Giao diện thông báo 70
h) Giao diện trò chuyện 71
i) Giao diện tìm kiếm cuộc trò chuyện 73
j) Giao diện story 74
k) Giao diện hẹn hò 75
l) Giao diện smart chat 76
m) Giao diện matching 77
n) Giao diện xem thông tin tài khoản gợi ý hẹn hò 78
CHƯƠNG 4: XÂY DỰNG VÀ CÀI ĐẶT CHƯƠNG TRÌNH 79
4.1 Cài đặt môi trường 79
- Yêu cầu: 79
4.2 Cài đặt cơ sở dữ liệu 79
4.3 Cài đặt backend 79
4.4 Cài đặt frontend 79
CHƯƠNG 5: ĐÁNH GIÁ, KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 80
5.1 Nhận xét và Đánh giá 80
5.2 Tổng kết 81
5.3 Hướng phát triển 81
TÀI LIỆU THAM KHẢO 82
Trang 11DANH MỤC HÌNH
Hình 2.1: Cơ chế render của ReactJS 6
Hình 2.2: ReactJS data binding một chiều 7
Hình 2.3: Vòng đời của ReactJS 8
Hình 2.4: Kiến trúc Microservice 11
Hình 2.5: API Gateway 14
Hình 3.1: Biểu đồ usecase toàn hệ thống 22
Hình 3.2: Biểu đồ usecase user 23
Hình 3.3: Biểu đồ usecase admin 24
Hình 3.4: Biểu đồ sequence đăng nhập 33
Hình 3.5: Biểu đồ sequence đăng ký 34
Hình 3.6: Biểu đồ sequence thay đổi mật khẩu 35
Hình 3.7: Biểu đồ sequence đăng ký 36
Hình 3.8: Biểu đồ sequence đăng ký 37
Hình 3.9: Biểu đồ sequence bài đăng 38
Hình 3.10: Biểu đồ sequence tương tác bài đăng 39
Hình 3.11: Biểu đồ sequence theo dõi người dùng 39
Hình 3.12: Biểu đồ sequence trò chuyện 40
Hình 3.13: Biểu đồ sequence gọi thoại 41
Hình 3.14: Biểu đồ sequence hẹn hò 42
Hình 3.15: Biểu đồ sequence chỉnh sửa thông tin cá nhân 43
Hình 3.16: Thiết kế cơ sở dữ liệu 45
Hình 3.17: Thiết kế giao diện trên figma 54
Hình 3.18: Giao diện đăng ký 57
Hình 3.19: Giao diện quên mật khẩu 58
Hình 3.20: Giao diện đăng nhập 59
Hình 3.21: Giao diện trang chủ 61
Hình 3.22: Giao diện chi tiết bài đăng 64
Trang 12Hình 3.23: Giao diện thông tin cá nhân 66
Hình 3.24: Giao diện cài đặt thiết lập tài khoản 67
Hình 3.25: Giao diện thay đổi mật khẩu 69
Hình 3.26: Giao diện hiển thị thông báo 70
Hình 3.27: Giao diện trò chuyện 71
Hình 3.28: Giao diện chi tiết cuộc trò chuyện 72
Hình 3.29: Giao diện tìm kiếm cuộc trò chuyện 73
Hình 3.30: Giao diện story 74
Hình 3.31: Giao diện hẹn hò 75
Hình 3.32: Giao diện smart chat 76
Hình 3.33: Giao diện matching 77
Hình 3.34: Giao diện xem thông tin tài khoản gợi ý hẹn hò 78
Trang 13DANH MỤC BẢNG
Bảng 3.1: Các tác nhân hệ thống 16
Bảng 3.2: Các chức năng hệ thống 21
Bảng 3.3: Tổng quan cơ sở dữ liệu 53
Bảng 3.4: Danh sách màn hình 56
Trang 14DANH MỤC TỪ VIẾT TẮT
1 CRM Customer Relationship Management
2 CTV Cộng tác viên
3 DSF Django Software Foundation
4 HMR Hot Module Replacement
5 SPA single page application
6 STT Số thức tự
Trang 15Chương 2: CƠ SỞ LÝ THUYẾT
Trình bày cơ sở lí thuyết, lí luận, giả thiết khoa học và phương pháp nghiên cứu đã được sử dụng trong khoá luận
Chương 3: PHÂN TÍCH THIẾT KẾ HỆ THỐNG
Phân tích thiết kế toàn bộ hệ thống, trình bày sơ đồ kiến trúc hệ thống, thiết kế
cơ sở dữ liệu, mô tả chức năng, thiết kế xây dựng giao diện Đưa ra được cái nhìn tổng quan về hệ thống và triển khai một cách linh hoạt
Chương 4: XÂY DỰNG VÀ CÀI ĐẶT CHƯƠNG TRÌNH
Hướng dẫn và cài đặt theo từng bước Hướng dẫn cài đặt chương trình cũng như cách triển khai dự án lên máy chủ
Chương 5: ĐÁNH GIÁ, KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Trình bày những kết quả đạt được, những đóng góp mới và những đề xuất mới, nhận xét ưu nhược điểm của đề tài
Đưa ra kết luận đồng thời đưa ra hướng phát triển đề tài trong tương lai TÀI LIỆU THAM KHẢO
Tài liệu được sử dụng trong quá trình thực hiện đề tài
Đưa ra kết luận đồng thời đưa ra hướng phát triển đề tài trong tương lai
Trang 16dễ dàng Đặc biệt mạng xã hội còn được xem là một kênh truyền thông hiệu quả, chia
sẻ thông tin rộng rãi hỗ trợ phòng chống dịch Covid-19
Tổ chức Y tế thế giới và chính phủ nhiều nước trên thế giới cũng đã tận dụng mạng
xã hội để chia sẻ thông tin, kiến thức cần thiết tới người dân để cùng chung tay phòng chống dịch bệnh Bên cạnh đó mạng xã hội kết nối những tấm lòng nhân ái để nhân dân cùng tương trợ nhau vượt qua khó khăn dịch bệnh, thiên tai…
Hiện nay với sự phát triển của internet và mạng xã hội, con người có thêm những phương tiện để giao tiếp, trao đổi, chia sẻ thông tin, hình ảnh video mọi lúc mọi nơi
mà không bị cản trở bởi yếu tố không gian địa lý Bên cạnh đó hẹn hò trực tuyến nổi lên đã giúp cho việc tìm kiếm người yêu trở lên thuận tiện hơn lúc nào hết, hẹn hò trực tuyến giúp tiết kiệm thời gian và công sức, gặp gỡ những người hoàn toàn mới, đây cũng là 1 cách để tìm hiểu trước về đối phương xem có hợp với bản thân không Trong phạm vi đề tài nhóm chúng em quyết định xây dựng một mạng xã hội hẹn hò cho giới trẻ nhằm hỗ trợ người dùng kết nối, kết đôi, trò chuyện và chia sẻ thông tin
1.2 Mục tiêu
Xây dựng thành công mạng xã hội cho giới trẻ với các tính năng như:
Người dùng có thể dễ dàng tìm kiếm được theo dõi người dùng, một người bạn đời, bạn tình, một cuộc hẹn bình thường, đối tượng hẹn hò phù hợp với mình
Người dùng có thể bắt đầu tìm kiếm và kết nối với nhiều đối tượng phù hợp gần khu vực bạn sống hoặc ở bất cứ nơi đâu, họ chỉ cần chọn khoảng cách và giới hạn độ tuổi những người mình muốn kết bạn
Trang 171.4 Nội dung thực hiện
Xây dựng ứng dụng di động đa nền tảng (android và ios), dễ dàng quản lý trên nhiều thiết bị
Xây dựng các chức năng chính của một mạng xã hội hẹn hò như: Nhắn tin, call, đăng bài, bình luận, theo dõi người dùng, tìm kiếm, lọc đối tượng hẹn hò, gợi ý hẹn hò, báo cáo người dùng…
+ Gợi ý hẹn hò: Xem danh sách người đang sẵn sàng hẹn hò, Xem danh sách gợi ý hẹn hò
+ Thiết lập, tùy chọn gợi ý hẹn hò (khu vực, độ tuổi, giới tính)
Trang 184
+ Yêu thích người dùng + Nhắn tin, gọi thoại + Theo dõi người dùng + Báo cáo người dùng + Đăng bài, xem, sửa, xóa bài đăng + Bình luận bài đăng
+ Yêu thích bài đăng + Đăng nhập, đăng xuất + Đăng ký
+ Quên mật khẩu + Chỉnh sửa thông tin cá nhân (bao gồm mật khẩu) + Xác minh tài khoản
- Hoàn thành các chức năng nổi bật của mạng xã hội (nhắn tin, gọi thoại, theo dõi người dùng, đăng bài, xem, sửa, xóa bài đăng, bình luận, yêu thích bài đăng, báo cáo người dùng, đăng ký, đăng nhập, đăng xuất, quên mật khẩu, chỉnh sửa thông tin cá nhân, chỉnh sửa mật khẩu, xác minh tài khoản)
Trang 19Một số tính năng nổi bật của NextJS
- Mặc định đã được render phía server
- Tự động split code để load page nhanh hơn
- Đơn giản hóa routing phía client (page based)
- Môi trường dev với webpack-based hỗ trợ Hot Module Replacement (HMR)
- Có thể implement với Express hoặc những Node.js HTTP server khác
- Dễ dàng customize với Babel và Webpack config
2.1.2 ReactJS
React là một thư viện Javascript mã nguồn mở để xây dựng các thành phần giao diện
có thể tái sử dụng Nó được tạo ra bởi Jordan Walke, một kỹ sư phần mềm tại Facebook Người bị ảnh hưởng bởi XHP (Một nền tảng thành phần HTML cho PHP) React lần đầu tiên được triển khai cho ứng dụng Newsfeed của Facebook năm 2011, sau đó được triển khai cho Instagram.com năm 2012 Nó được mở mã nguồn (open-sourced) tại JSConf US tháng 5 năm 2013
Một trong những điểm hấp dẫn của React là thư viện này không chỉ hoạt động trên phía client, mà còn được render trên server và có thể kết nối với nhau React so sánh
sự thay đổi giữa các giá trị của lần render này với lần render trước và cập nhật ít thay đổi nhất trên DOM
Ưu điểm reactJS:
Trang 206
3 Công nghệ DOM ảo giúp tăng hiệu năng cho ứng dụng Việc chỉ node gốc
mới có trạng thái và khi nó thay đổi sẽ tái cấu trúc lại toàn bộ, đồng nghĩa
với việc DOM tree cũng sẽ phải thay đổi một phần, điều này sẽ ảnh hưởng
đến tốc độ xử lý ReactJS sử dụng Virtual DOM (DOM ảo) để cải thiện vấn
đề này Virtual DOM là một object Javascript, mỗi object chứa đầy đủ thông
tin cần thiết để tạo ra một DOM, khi dữ liệu thay đổi nó sẽ tính toán sự thay
đổi giữa object và tree thật, điều này sẽ giúp tối ưu hoá việc re-render DOM
tree thật
Hình 2.1: Cơ chế render của ReactJS React sử dụng cơ chế one-way data binding – luồng dữ liệu 1 chiều Dữ liệu
được truyền từ parent đến child thông qua props Luồng dữ liệu đơn giản giúp
chúng ta dễ dàng kiểm soát cũng như sửa lỗi
Trang 217
Hình 2.2: ReactJS data binding một chiều
4 Reactjs giúp việc viết các đoạn code JS dễ dàng hơn Nó dùng cú pháp đặc
biệt là JSX (Javascript mở rộng) cho phép ta trộn giữa code HTML và
Javascript Ta có thể thêm vào các đoạn HTML vào trong hàm render mà
không cần phải nối chuỗi Đây là đặc tính thú vị của Reactjs Nó sẽ chuyển
đổi các đoạn HTML thành các hàm khởi tạo đối tượng HTML bằng bộ biến
đổi JSX
Trang 228
Hình 2.3: Vòng đời của ReactJS Tại sao nên sử dụng ReactJS:
5 Xu hướng hiện nay làm web là SPA (single page application) ReactJS là
một thư viện dễ học, phổ biến, được cộng đồng hỗ trợ nhiều
6 Chúng tôi đã có kinh nghiệm làm ReactJS với các môn học như: Đồ án mã
nguồn mở, Lập trình trên thiết bị di động, giao tiếp người máy…
7 Hiệu năng cao, mang lại trải nghiệm tốt cho người dùng
để phát triển các ứng dụng chạy ở client-side (Angular2) và server-side (NodeJS) Tại sao nên sử dụng TypeScript:
Trang 239
- Dễ phát triển dự án lớn: Với việc sử dụng các kỹ thuật mới nhất và lập trình hướng đối tượng nên TypeScript giúp chúng ta phát triển các dự án lớn một cách dễ dàng
- Nhiều Framework lựa chọn: Hiện nay các Javascript Framework đã dần khuyến khích nên sử dụng TypeScript để phát triển, ví dụ như AngularJS 2.0
và Ionic 2.0
- Hỗ trợ các tính năng của Javascript phiên bản mới nhất: TypeScript luôn đảm bảo việc sử dụng đầy đủ các kỹ thuật mới nhất của Javascript, ví dụ như version hiện tại là ECMAScript 2015 (ES6)
- Là mã nguồn mở: TypeScript là một mã nguồn mở nên bạn hoàn toàn có thể
sử dụng mà không mất phí, bên cạnh đó còn được cộng đồng hỗ trợ
- TypeScript là Javscript: Bản chất của TypeScript là biên dịch tạo ra các đoạn
mã javascript nên bạn có thể chạy bất kỳ ở đâu miễn ở đó có hỗ trợ biên dịch Javascript Ngoài ra bạn có thể sử dụng trộn lẫn cú pháp của Javascript vào bên trong TypeScript, điều này giúp các lập trình viên tiếp cận TypeScript dễ dàng hơn
2.2 BackEnd
2.1.4 Python Django
Django là 1 web framework khá nổi tiếng được viết hoàn toàn bằng ngôn ngữ Python
Nó là 1 framework với đầy đủ các thư viện, module hỗ trợ các web-developer Django
sử dụng mô hình MVC và được phát triển bởi Django Software Foundation (DSF một
tổ chức phi lợi nhuận độc lập) Mục tiêu chính của Django là đơn giản hóa việc tạo các website phức tạp có sử dụng cơ sở dữ liệu Django tập trung vào tính năng “có thể tái sử dụng” và “có thể tự chạy” của các component, tính năng phát triển nhanh, không làm lại những gì đã làm Một số website phổ biến được xây dựng từ Django là Pinterest, Instagram, Mozilla, và Bitbucket
Tại sao nên dùng Diango:
Trang 24- Khả năng mở rộng tốt: Django có thể đáp ứng lượng traffic lớn, nghĩa là bạn không cần phải lo lắng về khả năng scale sản phẩm của mình nữa
- Tính linh động: Django được viết bằng Python, nó có thể chạy đa nền tảng
Nó có nghĩa rằng bạn không ràng buộc một platform server cụ thể Django được hỗ trợ tốt ở nhiều nhà cung cấp hosting, họ sẽ cung cấp hạ tầng và tài liệu cụ thể cho hosting web Django
2.1.5 ExpressJS
Express là một framework web Node.js phổ biến nhất và là thư viện cơ bản cho một
số framework Node.js phổ biến khác Express cung cấp các tính năng mạnh mẽ để phát triển web server như:
- Viết trình xử lý cho các yêu cầu (request) với các phương thức HTTP khác nhau tại các đường dẫn URL khác nhau (router)
- Tích hợp công cụ hiển thị “view” để tạo các phản hồi bằng cách chèn dữ liệu vào các view
- Thêm các yêu cầu xử lý trung gian “middleware” tại bất kỳ điểm nào luồng
xử lý yêu cầu
- Các Framework nổi tiếng của NodeJS hiện nay đều sử dụng ExpressJS như một core function, chẳng hạn: SailsJS, MEAN
Trang 26- Phân phối liên tục: Cho phép phát hành phần mềm thường xuyên, thông qua
tự động hóa có hệ thống về tạo, kiểm tra và phê duyệt phần mềm
- Trách nhiệm: Dịch vụ vi mô không tập trung vào các ứng dụng như dự án Thay vào đó, họ coi các ứng dụng là sản phẩm mà họ chịu trách nhiệm
- Quản trị phi tập trung: Trọng tâm là sử dụng đúng công cụ cho đúng công việc Điều đó có nghĩa là không có mẫu chuẩn hóa hoặc bất kỳ mẫu công nghệ nào Các nhà phát triển có quyền tự do lựa chọn các công cụ hữu ích tốt nhất để giải quyết vấn đề của họ
- Agility: Microservice hỗ trợ phát triển nhanh Bất kỳ tính năng mới nào cũng
có thể được phát triển và loại bỏ một lần nữa
Ưu điểm của microservice:
- Phát triển độc lập: Tất cả các dịch vụ siêu nhỏ có thể được phát triển dễ dàng dựa trên chức năng cá nhân của họ
- Triển khai độc lập: Dựa trên các dịch vụ của họ, chúng có thể được triển khai riêng lẻ trong bất kỳ ứng dụng nào
- Cách ly lỗi: Ngay cả khi một dịch vụ của ứng dụng không hoạt động, hệ thống vẫn tiếp tục hoạt động
- Ngăn xếp công nghệ hỗn hợp: Các ngôn ngữ và công nghệ khác nhau có thể được sử dụng để xây dựng các dịch vụ khác nhau của cùng một ứng dụng
- Chia tỷ lệ chi tiết: Các thành phần riêng lẻ có thể chia tỷ lệ theo nhu cầu, không cần phải chia tỷ lệ tất cả các thành phần lại với nhau
Trang 2713
API Gateway:
Về lý thuyết, một thực thể client có thể thực hiện một request trực tiếp đến một microservice thông qua một endpoint công khai đã được định sẵn Tuy nhiên, điều này sẽ xảy ra các trường hợp client phải thực hiện nhiều request riêng biệt, gây ra Về
lý thuyết, một thực thể client có thể thực hiện một request trực tiếp đến một microservice thông qua một endpoint công khai đã được định sẵn Tuy nhiên, điều này sẽ xảy ra các trường hợp client phải thực hiện nhiều request riêng biệt, gây ra độ trễ không mong muốn Đồng thời cách tiếp cận này cũng sẽ khiến việc triển khai phía client trở nên phức tạp Mặt khác, phương pháp nêu trên sẽ gây ra nhiều khó khăn khi tái cấu trúc hoặc mở rộng hệ thống, khi ta muốn chia nhỏ hoặc kết hợp các microservice
Từ những khó khăn trên, cách tiếp cận tốt hơn là sử dụng API gateway như một điểm đầu vào duy nhất của hệ thống Tất cả các request từ client sẽ đi qua API gate- way, sau đó sẽ được phân phối tới microservice thích hợp API gateway đóng gói hệ thống nội bộ và cung cấp API được thiết kế riêng cho từng microservice, nó có thể đảm nhiệm các tác vụ như xác thực (authentication), giám sát (monitoring), cân bằng tải (load balancing), bộ nhớ đệm (cache), phân phối request (request shaping and management) và xử lý phản hồi các tệp tĩnh (static response handling)
Trang 2814 Hình 2.5: API Gateway
Trang 2915
CHƯƠNG 3: PHÂN TÍCH THIẾT KẾ HỆ
3.1 Phân tích thiết kế hệ thống
3.1.1 Các tác nhân hệ thống
STT Tác nhân Ý nghĩa nghiệp vụ
1 Admin Admin là tác nhân giữ vai trò quản trị của hệ thống, là
người điều hành, quản lý và theo dõi mọi hoạt động của
hệ thống Admin có thể thực hiện tất cả chức năng trong
hệ thống như: Đăng nhập, quản lý quyền, quản lý người dùng, quản lý bài đăng, quản lý phản hồi người dùng, quản lý báo cáo người dùng, …
2 Cộng tác
viên (CTV)
Cộng tác viên (CTV) là tác nhân có vai trò hỗ trợ Admin quản trị hệ thống Cộng tác viên có thể thực hiện tất cả các chức năng trong hệ thống ngoại trừ chức năng quản
lý quyền như: Đăng nhập, quản lý người dùng, quản lý bài đăng, quản lý phản hồi người dùng, quản lý báo cáo người dùng, …
3 User User là tác nhân thực hiện các chức năng chính của hệ
thống như: Đăng ký, xác minh tài khoản, đăng nhập, thay đổi mật khẩu, xem trang cá nhân, tạo, sửa, xóa bài đăng, yêu thích, bình luận bài đăng, xem và chỉnh sửa thông tin
cá nhân, tìm kiếm, tạo story, xem story, theo dõi người dùng, báo cáo người dùng, nhắn tin, gọi thoại, yêu thích người dùng, thiết lập tùy chọn gợi ý người dùng, ghép đôi ngẫu nhiên(xác nhận mối quan hệ, hủy bỏ ghép đôi, báo cáo người dùng) …
Trang 3016
Bảng 3.1: Các tác nhân hệ thống
3.1.2 Các Chức năng hệ thống
STT Tên chức năng Mô tả
1 Đăng ký tài khoản Người dùng đăng ký tài khoản bằng cách chọn
đăng ký và nhập thông tin đăng ký bao gồm: …
2 Xác minh tài khoản Khi người dùng muốn xác minh thông tin tài khoản
hệ thống sẽ yêu cầu người dùng cung cấp hình ảnh chứng minh hoặc hộ chiếu, thông tin này được …
3 Quên mật khẩu Khi người dùng sử dụng chức năng quên mật khẩu
hệ thống sẽ gửi một email về mail đăng ký tài khoản với nội dung là một đường link kèm theo mã
đã được mã hóa dùng để nhập lại mật khẩu mới Sau khi người dùng nhập mật khẩu mới hệ thống
sẽ yêu cầu người dùng nhập lại mật khẩu này để đăng nhập vào hệ thống
4 Đăng nhập Để sử dụng hệ thống người dùng bắt buộc phải
đăng nhập vào hệ thống Dựa vào mail và mật khẩu của tài khoản người dùng có thể đăng nhập vào hệ thống thành công
5 Thay đổi mật khẩu Khi người dùng sử dụng chức năng thay đổi mật
khẩu hệ thống sẽ yêu cầu người dùng nhập lại mật khẩu hiện tại, mật khẩu mới và xác minh mật khẩu mới để thay đổi mật khẩu
Trang 31- Story: Nơi người dùng có thể quay video ngắn hoặc chụp ảnh để chia sẻ những khoảnh khắc đáng nhớ trong ngày Và mỗi nội dung người dùng đăng lên Story sẽ bị hủy trong vòng 24 giờ kể từ khi đăng lên
- Bài đăng: Là những chia sẻ dạng văn bản, hình ảnh, video, … của người dùng trên trang cá nhân, mỗi bài đăng của tài khoản sẽ được hiển thị ở trang chủ của những người
đã theo dõi tài khoản đó Mỗi bài đăng bao gồm các chức năng như yêu thích, hiển thị danh sách người yêu thích, bình luận và trả lời bình luận
- Yêu thích: Người dùng sẽ được yêu thích mỗi bài đăng một lần Và có thể hủy bỏ lượt yêu thích đối với bài đăng đó
- Bình luận: Người dùng có thể bình luận bài viết của người mình theo dõi Bình luận được chia làm hai cấp: Bình luận cho bài viết và bình luận trả lời bình luận
Lượt yêu thích: Người dùng có thể xem số lượng yêu thích và danh sách những người đã yêu thích bài đăng
Trang 3218
7 Xem trang cá nhân Trang cá nhân sẽ hiển thị thông tin cá nhân người
dùng, các bài đăng từng đăng Ở trang cá nhân người dùng có thể chỉnh sửa, cập nhật thông tin cá nhân, tạo bài đăng mới, xem, sửa, xóa bài đăng, xem lượt thích, danh sách người thích, bình luận và trả lời bình luận
8 Cập nhật thông tin cá
nhân
Người dùng có thể thay đổi, cập nhật thông tin cá nhân như: avatar, tên người dùng, ngày tháng năm sinh, …
9 Tạo bài đăng cá nhân Người dùng tạo bài đăng có thể bao gồm chữ, hình
sách người dùng thích
bài đăng
Người dùng truy cập vào trang cá nhân để xem danh sách bài đăng cá nhân, với mỗi bài đăng người dùng có thể xem lượt tích, danh sách lượt thích, xem và trả lời bình luận Người dùng có thể xóa sửa bài đăng đã đăng
11 Xem thông báo Người xem thông báo (thông báo lượt thích, bình
luận bài đăng …) Khi bấm vào thông báo sẽ dẫn tới bài đăng
Trang 3313 Báo cáo người dùng Khi người dùng đăng những thông tin vi phạm
pháp luật, vi phạm đạo đức hoặc giả mạo danh tính của người khác thì bạn có thể báo cáo người dùng Admin hoặc cộng tác viên sẽ kiểm tra lại thông tin nếu đúng thì tài khoản đó sẽ bị khóa
14 Xem danh sách gợi ý
theo dõi người dùng:
Theo dõi người dùng
15 Theo dõi người dùng Sau khi người dùng theo dõi một tài khoản khác thì
người dùng có thể gửi tin nhắn chờ tới tài khoản, xem được các bài đăng từ tài khoản đó, khi tài khoản đó trả lời lại tin nhắn hoặc theo dõi ngược lại thì hai tài khoản có thể nhắn tin, gọi thoại với nhau
16 Nhắn tin:
Nhắn tin
- Xem tin nhắn
chờ Gửi tin nhắn chờ
Người dùng có thể nhắn tin, gửi hình ảnh, video,
… qua lại khi cả hai tài khoản đã theo dõi nhau Nếu tài khoản theo dõi tài khoản khác thì có thể gửi tin nhắn chờ Nếu tài khoản nhận được một tin nhắn chờ, đọc và trả lời tin nhắn thì tài khoản đó sẽ tự
Trang 34- Xem danh sách
gợi ý hẹn hò Thiết lập tùy chỉnh gợi
ý hẹn hò
Khu vực hẹn hò là nơi hiển thị thông tin danh sách người sẵn sàng hẹn hò, gợi ý người hẹn hò, người dùng có thể tìm kiếm đối tượng hẹn hò bằng các tùy chỉnh độ tuổi, khu vực và giới tính
18 Ghép đôi ngẫu nhiên:
- Xác nhận ghép
đôi
- Báo cáo người
dùng Hủy bỏ ghép đôi
Chức năng ghép đôi ngẫu nhiên sẽ kết nối ngẫu nhiên 2 người sẵn sàng hẹn hò lại với nhau Mỗi lần ghép đôi người dùng sẽ có 3 phút để xác nhận mối quan hệ, trong thời gian này người dùng có thể nhắn tin, chia sẻ thông tin với đối phương giúp họ
có cái nhìn tổng quan dễ dàng đưa ra quyết định có tiếp tục trò chuyện tìm hiểu thêm hay không Nếu đối phương gửi thông tin, tin nhắn với các nội dung sai trái, vi phạm đạo đức và pháp luật thì người dùng có thể báo cáo người dùng hoặc có thể hủy bỏ lần ghép đôi đó
19 Quản lý người dùng Chức năng quản lý người dùng giúp admin và cộng
tác viên quản lý thông tin, xác định danh tính người dùng
Trang 3521
20 Quản lý bài đăng Chức năng quản lý bài đăng giúp admin và cộng
tác viên quản lý bài đăng của tất cả người dùng, người quản lý có thể xem xét nội dung và báo cáo
vi phạm cho bất kỳ bài viết nào
21 Quản lý báo cáo người
22 Quản lý quyền Chức năng quản lý quyền giúp admin cấp quyền,
hủy bỏ quyền cho các tài khoản
23 Đăng xuất Người dùng đăng xuất ra khỏi hệ thống
Bảng 3.2: Các chức năng hệ thống
Trang 3622
3.1.3 Biểu đồ usecase
a) Biểu đồ usecase toàn hệ thống
Hình 3.1: Biểu đồ usecase toàn hệ thống
Trang 3723
b) Biểu đồ usecase user
Hình 3.2: Biểu đồ usecase user
Trang 3824
c) Biểu đồ usecase admin
Hình 3.3: Biểu đồ usecase admin
2 Cung cấp thông tin đăng ký
3 Kiểm tra thông tin hợp lệ
Trang 3925
4 Xác nhận mã OTP
5 Lưu thông tin đăng ký
6 kết thúc
- Dòng sự kiện phụ: thông tin đăng ký không hợp lệ
- Tiền điều kiện:
- Hậu điều kiện: Có thể thực hiện các tác vụ
- Quên mật khẩu
-Tóm tắt: Người dùng chọn chức năng quên mật khẩu
-Dòng sự kiện chính:
1 Chọn quên mật khẩu
2 Nhập thông tin số điện thoại để lấy lại mật khẩu
3 Kiểm tra thông tin có hợp lệ không
4 Gửi mã OTP về số điện thoại
5 Người dùng dùng mã OTP để lấy lại mật khẩu mới cho tài khoản
4 Kiểm tra thông tin có hợp lệ không, lưu thông tin xuống database
5 kết thúc
- Dòng sự kiện phụ: Thông tin số điện thoại không hợp lệ
- Tiền điều kiện: Đã đăng ký tài khoản
- Hậu điều kiện: Lấy lại mật khẩu mới cho tài khoản
- Đăng nhập
-Tóm tắt: người dùng chọn chức năng đăng nhập hệ thống
Trang 4026
-Dòng sự kiện chính:
1 Chọn đăng nhập
2 Nhập thông tin đăng nhập
3 Kiểm tra thông tin đăng nhập có hợp lệ không
4 Đăng nhập vào hệ thống
5 kết thúc
- Dòng sự kiện phụ: thông tin đăng nhập không hợp lệ
- Tiền điều kiện:
- Hậu điều kiện: Có thể thực hiện các tác vụ
- Thay đổi mật khẩu
-Tóm tắt: Người dùng chọn chức năng thay đổi mật khẩu
-Dòng sự kiện chính:
1 Chọn chức năng thay đổi mật khẩu
2 Nhập mật khẩu cũ, mật khẩu mới và xác nhận mật khẩu mới
3 Chọn lưu lại mật khẩu mới
4 Kiểm tra và lưu thông tin vào database
5 Trả ra dữ liệu và thông báo đổi mật khẩu thành công
6 Kết thúc
- Dòng sự kiện phụ:
- Tiền điều kiện: Phải đăng nhập vào hệ thống
- Hậu điều kiện: Thay đổi thành công mật khẩu