Bối cảnh và vấn đề nghiên cứu

Trong bối cảnh Cách mạng Công nghiệp 4.0 đang tác động sâu rộng đến toàn xã hội, tri thức và công nghệ trở thành những yếu tố then chốt quyết định sự tiến bộ của mỗi quốc gia. Thế hệ trẻ cần tiếp cận, tiếp thu và ứng dụng tri thức một cách hiệu quả để định hình tương lai. Tuy nhiên, thực tế cho thấy giới trẻ đang đối mặt với nhiều thách thức như sự suy giảm về số lượng sách đọc, thời gian dành cho học tập bị thu hẹp và sự xuất hiện ngày càng nhiều của các trang web có nội dung tiêu cực, độc hại. Hệ thống giáo dục đang chịu áp lực chuyển đổi để thích nghi với bối cảnh mới, trong đó công nghệ là công cụ không thể thiếu.

Xuất phát từ thực tiễn trên, đề tài khóa luận tốt nghiệp "Xây dựng website mạng xã hội sử dụng MERN STACK" của nhóm tác giả Lê Trương Ngọc Hải và Phan Đại Đăng Khoa (ngành Công nghệ Thông tin, chuyên ngành Công nghệ phần mềm, Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh) đã được thực hiện nhằm xây dựng một không gian trực tuyến chuyên biệt cho việc chia sẻ, trao đổi và lan tỏa tri thức học thuật trong cộng đồng.

Mục tiêu cụ thể của đề tài được xác định gồm 7 nhiệm vụ:

  1. Xây dựng giao diện trực quan với người dùng cùng các chức năng hỗ trợ cụ thể.
  2. Xây dựng ứng dụng gắn liền với nhu cầu thực tiễn của người dùng (xem tin tức, quản lý thông tin cá nhân, tương tác bài viết).
  3. Cung cấp giải pháp tối ưu cho nhà quản trị hệ thống nhằm đảm bảo tính xác thực và độ tin cậy của hệ thống.
  4. Đảm bảo tính xác thực và đáng tin cậy của nội dung thông qua hệ thống kiểm duyệt và xác minh thông tin được chia sẻ trên nền tảng.
  5. Xây dựng nền tảng có khả năng mở rộng và tích hợp dễ dàng với các công nghệ, dịch vụ khác.
  6. Triển khai website trên nền tảng điện toán đám mây nhằm đảm bảo khả năng phục hồi và mở rộng tài nguyên theo nhu cầu thực tế.
  7. Vận dụng toàn diện kiến thức về các công nghệ phát triển website hiện đại vào sản phẩm thực tế.

Đối tượng và phạm vi nghiên cứu của đề tài:

  • Đối tượng nghiên cứu: Quy trình phân tích, thiết kế, cài đặt và kiểm thử ứng dụng web mạng xã hội; bộ công nghệ MERN Stack (MongoDB, ExpressJS, ReactJS, NodeJS) kết hợp REST API và TypeScript.
  • Phạm vi không gian: Đồ án được triển khai và nghiệm thu tại Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh.
  • Phạm vi thời gian: Quá trình nghiên cứu và phát triển được thực hiện chính thức từ ngày 04/03/2024 đến ngày 15/06/2024 (trước đó có giai đoạn khảo cứu từ tháng 08/2023) và hoàn thiện bảo vệ vào tháng 07/2024.

Cơ sở lý thuyết và phương pháp nghiên cứu

Khóa luận xây dựng hệ thống dựa trên nền tảng kiến trúc ngăn xếp công nghệ MERN Stack và các tiêu chuẩn phần mềm hiện đại:

  • ReactJS: Thư viện mã nguồn mở phát triển bởi Facebook (2013), sử dụng cơ chế DOM ảo (Virtual DOM) để tối ưu hóa hiệu năng render giao diện, tiếp cận theo mô hình thành phần (component-based) linh hoạt và sử dụng cú pháp mở rộng JSX kết hợp ngôn ngữ TypeScript.
  • NodeJS: Nền tảng thực thi JavaScript đa nền tảng phía máy chủ xây dựng trên V8 JavaScript Engine của Google Chrome (phát triển bởi Ryan Dahl năm 2009). NodeJS vận hành theo mô hình xử lý vào/ra không đồng bộ (Asynchronous Non-blocking I/O) và tận dụng hệ sinh thái thư viện npm.
  • MongoDB: Hệ quản trị cơ sở dữ liệu phi quan hệ NoSQL dạng tài liệu (document database) phát triển bởi MongoDB Inc. Dữ liệu được cấu trúc dưới dạng JSON-like (BSON), cho phép thay đổi cấu trúc dữ liệu linh hoạt mà không đòi hỏi lược đồ (schema) cố định như RDBMS, hỗ trợ mở rộng cụm máy chủ và truy vấn phức tạp.
  • ExpressJS: Khung ứng dụng (framework) cho NodeJS do TJ Holowaychuk phát triển (2010), cung cấp tầng trừu tượng trên các chức năng HTTP, điều phối định tuyến và hỗ trợ hệ thống middleware phong phú để quản lý xác thực, bảo mật và tương tác dữ liệu.
  • Kiến trúc REST API: Phương thức giao tiếp chuẩn hóa giữa máy khách (Front-End) và máy chủ (Back-End) qua giao thức HTTP.

Phương pháp nghiên cứu được triển khai kết hợp giữa nghiên cứu tài liệu và nghiên cứu thực nghiệm:

  • Nghiên cứu tài liệu: Thu thập, tổng hợp lý thuyết về công nghệ MERN, các mô hình kiến trúc phần mềm và các mẫu thiết kế (design patterns).
  • Khảo sát hệ thống tương tự: Tác giả tiến hành khảo sát thực tế website mạng xã hội chia sẻ bài viết Spiderum (https://spiderum.com), phân tích các thành phần giao diện (Trang chủ, Thanh điều hướng, Danh sách bài viết, Màn hình đăng nhập, Trang cá nhân, Hỗ trợ người dùng, Màn hình trò chuyện) nhằm rút ra ưu điểm và các hạn chế cần cải tiến.
  • Nghiên cứu yêu cầu người dùng và tính năng: Phân tích nhu cầu tương tác bài viết, nhắn tin thời gian thực, quản lý nhóm và kiểm duyệt nội dung.
  • Phương pháp thực nghiệm phần mềm: Mô hình hóa yêu cầu thông qua biểu đồ ca sử dụng (Usecase Diagrams), xây dựng biểu đồ tuần tự (Sequence Diagrams), thiết kế cơ sở dữ liệu, lập trình hiện thực hóa hệ thống, triển khai môi trường và xây dựng bộ ca kiểm thử (Test cases).
  • Công cụ quản lý dự án: Sử dụng nền tảng JIRA để phân rã công việc, quản lý danh sách tác vụ (tasks) và theo dõi lỗi phát sinh (bugs).

Thiết kế và triển khai hệ thống

Hệ thống được thiết kế theo mô hình phân tách độc lập giữa tầng giao diện (Front-End) và tầng dịch vụ nghiệp vụ/dữ liệu (Back-End), liên kết thông qua chuẩn giao tiếp RESTful API.

Phân quyền và cấu trúc chức năng

Hệ thống phân định quyền hạn rõ ràng cho 3 nhóm tác nhân chính:

Nhóm tác nhân Chức năng chính Chức năng nghiệp vụ chi tiết
Người dùng (User) Quản lý tài khoản, Tương tác bài viết, Nhóm, Trò chuyện - Đăng ký (xác thực OTP qua email), Đăng nhập, Quên mật khẩu, Cập nhật thông tin cá nhân, Đổi ảnh đại diện.
- Tạo bài viết/bản thảo, xem bài viết (mới nhất, phổ biến, nổi bật, đã lưu), thích/bỏ thích, bình luận, lưu bài, chia sẻ bài viết lên Facebook.
- Báo cáo vi phạm (bài viết, người dùng, thẻ tag, bình luận).
- Nhắn tin thời gian thực (xóa đoạn chat, duyệt tin nhắn chờ).
- Tạo nhóm, duyệt thành viên, quản lý bài viết nhóm.
- Tìm kiếm bài viết, người dùng, nhóm; tương tác Chatbot hỗ trợ.
Biên tập viên (Editor) Kiểm duyệt nội dung và Xử lý báo cáo vi phạm - Tiếp nhận và xem danh sách chi tiết các ticket báo cáo từ người dùng.
- Phê duyệt hoặc từ chối/xóa báo cáo vi phạm.
- Khóa tài khoản người gửi báo cáo sai sự thật hoặc tài khoản vi phạm.
- Theo dõi số liệu thống kê báo cáo.
Quản trị viên (Admin) Quản trị toàn bộ hệ thống và Cấu hình vận hành - Quản lý cấu hình, thiết lập hệ thống.
- Quản lý người dùng (xem chi tiết, thêm mới, phân quyền, khóa/mở khóa tài khoản).
- Quản lý toàn bộ danh mục bài viết, nhóm người dùng, danh sách thẻ Tag.
- Xem bảng điều khiển (Dashboard) báo cáo thống kê hoạt động.
- Cấu hình lịch kiểm duyệt tự động.

Cơ chế tự động hóa và an toàn hệ thống

  • Lập lịch kiểm duyệt tự động (Scheduled Tasks): Hệ thống tích hợp module lập lịch chạy định kỳ vào thời điểm 23:59:59 hàng ngày. Tác vụ này tự động rà soát toàn bộ các bài viết trên hệ thống dựa trên các bộ quy tắc cấu hình do Quản trị viên thiết lập, tự động phát cảnh báo hoặc xóa bài viết vi phạm, đồng thời gửi email thông báo nhắc nhở đến người dùng.
  • Xác thực bảo mật: Sử dụng cơ chế cấp phát và kiểm tra mã OTP gửi về hòm thư điện tử khi người dùng thực hiện đăng ký tài khoản hoặc yêu cầu khôi phục mật khẩu.
  • Tương tác thời gian thực: Triển khai cơ chế truyền nhận dữ liệu trực tiếp phục vụ hệ thống tin nhắn tức thời và phím tắt thông báo.

Nội dung chính theo từng chương

Phần Mở đầu

Trình bày tính cấp thiết của việc xây dựng mạng xã hội học thuật trong kỷ nguyên chuyển đổi số, nêu rõ 7 mục tiêu nghiên cứu cụ thể, phương pháp tiếp cận thực nghiệm và kế hoạch triển khai đề tài.

Chương 1. Cơ sở lý thuyết

Nghiên cứu sâu về các công nghệ thành phần trong MERN Stack:

  • ReactJS: Bản chất Virtual DOM, tính mô-đun hóa giao diện, cú pháp JSX và khả năng tương thích của hệ sinh thái.
  • NodeJS: Động cơ V8, cơ chế Asynchronous Model trong xử lý non-blocking I/O, hệ thống quản lý gói npm.
  • MongoDB: Cấu trúc dữ liệu JSON-like BSON, tính linh hoạt của Document Database NoSQL, cơ chế tự động sao chép (replication), khả năng mở rộng phân tán.
  • ExpressJS: Cấu trúc framework nhẹ, cơ chế định tuyến HTTP và kiến trúc middleware mở rộng chức năng.

Chương 2. Khảo sát, phân tích, thiết kế

  • Phân tích bối cảnh mạng xã hội toàn cầu, các vấn đề về quyền riêng tư, tin giả, độc hại trực tuyến và xu hướng ứng dụng AI.
  • Khảo sát thực trạng website Spiderum: Đánh giá ưu điểm (đa dạng hình thức podcast/video, giao diện danh mục rõ ràng, hỗ trợ đăng nhập Facebook) và nhược điểm (chưa phân hệ người dùng chuyên biệt, tính năng nhắn tin còn đơn giản, thiếu công cụ AI và liên kết chia sẻ đa nền tảng).
  • Xác lập danh mục yêu cầu chức năng cho 3 phân hệ (User, Editor, Admin) và 7 yêu cầu phi chức năng (tốc độ tra cứu, tính tiện dụng quản lý, độ thân thiện giao diện, năng lực lưu trữ, an toàn bảo mật, tính tương thích đa trình duyệt, độ phản hồi thời gian thực).

Chương 3. Mô hình hóa yêu cầu

  • Xây dựng hệ thống biểu đồ ca sử dụng (Usecase Diagram) tổng quát và các biểu đồ phân rã chi tiết: Usecase Báo cáo, Usecase Nhắn tin, Usecase Quản lý bài viết, Usecase Quản lý báo cáo, Usecase Tương tác nhóm, Usecase Quản lý người dùng.
  • Chi tiết hóa hơn 50 bảng đặc tả ca sử dụng (từ ca HQ1 đến các ca mở rộng), quy định rõ mã định danh, tác nhân chính, tiền điều kiện, hậu điều kiện, luồng sự kiện chính (Main Flow) và các luồng ngoại lệ (Exception Flows như sai mật khẩu, tài khoản bị khóa, chưa xác thực OTP, trùng email/tài khoản).

Chương 4. Thiết kế phần mềm

  • Thiết kế hệ thống lược đồ tuần tự (Sequence Diagram) tương ứng với toàn bộ các ca sử dụng nhằm mô tả chi tiết luồng dữ liệu trao đổi giữa User Interface, Controller/Service, Database và hệ thống gửi Mail OTP.
  • Xây dựng lược đồ cơ sở dữ liệu NoSQL (MongoDB Collections) biểu diễn cấu trúc lưu trữ cho người dùng, bài viết, bình luận, nhóm, thẻ tag, thông báo, đoạn hội thoại và ticket báo cáo vi phạm.

Chương 5. Thiết kế giao diện và xử lý

Hiện thực hóa và thiết kế chi tiết hệ thống màn hình chức năng:

  • Phân hệ Người dùng: Trang đăng nhập, xác thực tài khoản OTP, quên mật khẩu/đặt lại mật khẩu; Trang News Feed, Trang tin nhắn, Upload hình ảnh; Các danh mục bài viết (Mới nhất, Phổ biến, Nổi bật, Đã lưu, Bản thảo); Màn hình chi tiết bài viết, khu vực bình luận, công cụ tìm kiếm; Giao diện thông báo, tạo bài viết 3 bước; Giao diện Chatbot hỗ trợ; Quản lý nhóm (Tất cả nhóm, Nhóm đã tham gia, Nhóm tự tạo, Mời thành viên); Trang cá nhân và chỉnh sửa thông tin.
  • Phân hệ Quản trị & Biên tập: Trang chủ Admin, Bảng điều khiển Dashboard thống kê; Quản lý danh mục bài viết, nhóm, thẻ tag, tài khoản người dùng, danh sách tài khoản bị khóa; Quản lý ticket report và giao diện xử lý báo cáo vi phạm; Giao diện thiết lập lịch kiểm duyệt tự động (Setting lịch xóa bài và thêm mới cấu hình).

Chương 6. Cài đặt và kiểm thử ứng dụng

  • Liệt kê các thư viện phụ thuộc, môi trường triển khai cho cả Front-End và Back-End.
  • Xây dựng kịch bản kiểm thử (Test cases) chức năng và kiểm thử hệ thống.
  • Ghi nhận và kiểm soát quy trình xử lý lỗi/tác vụ thông qua hệ thống JIRA.

Phần Kết luận

Đánh giá tổng kết các kết quả đạt được về mặt kiến thức công nghệ và kinh nghiệm thực tiễn, phân tích ưu nhược điểm còn tồn đọng và vạch ra các định hướng phát triển trong tương lai.


Kết quả và đóng góp

Kết quả chính đạt được

  • Hoàn thiện hệ thống mạng xã hội tri thức đa phân hệ: Xây dựng thành công ứng dụng web với đầy đủ các tính năng cho 3 vai trò tác nhân (Người dùng, Biên tập viên, Quản trị viên).
  • Hiện thực hóa quy trình kiểm soát nội dung: Triển khai thành công module xử lý báo cáo vi phạm nhiều cấp độ (Bài viết, Bình luận, Tag, Tài khoản) và module lập lịch kiểm duyệt tự động vận hành vào thời điểm 23:59:59 mỗi ngày.
  • Hoàn thành hệ thống tài liệu thiết kế phần mềm chi tiết: Đóng góp hệ thống hơn 50 bảng đặc tả ca sử dụng, hơn 50 lược đồ tuần tự chi tiết và hệ thống thiết kế giao diện hoàn chỉnh cho toàn bộ các luồng nghiệp vụ.
  • Kiểm soát chất lượng bằng công cụ chuyên nghiệp: Ứng dụng quy trình quản lý task và theo dõi lỗi xuyên suốt trên nền tảng JIRA trong quá trình phát triển.

Giải pháp và kỹ thuật tác giả đề xuất

  • Đề xuất kiến trúc chia tách Front-End (ReactJS/TypeScript) và Back-End (NodeJS/ExpressJS) giao tiếp qua REST API, giúp hệ thống có khả năng mở rộng độc lập.
  • Thiết lập quy trình xác thực hai bước thông qua mã OTP qua email nhằm giảm thiểu tài khoản giả mạo.
  • Xây dựng quy trình xử lý ticket báo cáo dành riêng cho Biên tập viên, cho phép khóa quyền của người gửi báo cáo sai sự thật hoặc cảnh báo người dùng vi phạm quy tắc cộng đồng qua email tự động.

Đóng góp so với khảo sát thực tế

So với nền tảng tham chiếu Spiderum, hệ thống của nhóm tác giả đã bổ sung:

  1. Phân định rõ ràng 3 phân hệ người dùng (User - Editor - Admin) với các không gian làm việc chuyên biệt (Dashboard, Quản lý Ticket, Quản lý Cài đặt).
  2. Tích hợp công cụ Chatbot hỗ trợ trực tiếp người dùng trên giao diện.
  3. Bổ sung cơ chế quản lý nhóm chi tiết (phê duyệt thành viên, phê duyệt bài viết trong nhóm) và tính năng chia sẻ liên kết bài viết sang nền tảng Facebook.
  4. Tự động hóa khâu cảnh báo vi phạm bằng tác vụ lập lịch định kỳ và thông báo thư điện tử.

Hạn chế và hướng nghiên cứu tiếp

Hạn chế

  • Trong giai đoạn đầu nghiên cứu (từ 08/2023 đến 01/2024), nhóm tác giả định hướng tìm hiểu công nghệ Java Spring Boot và MySQL, sau đó từ tháng 02/2024 mới thực hiện chuyển đổi toàn bộ mã nguồn sang công nghệ MERN Stack, dẫn đến việc tiêu tốn thời gian tái thiết kế hệ thống.
  • Tính năng Chatbot hỗ trợ người dùng mới ở mức cơ bản, chưa tích hợp sâu các mô hình trí tuệ nhân tạo tạo sinh tiên tiến để phân tích ngữ nghĩa nội dung bài viết tự động.
  • Chưa hỗ trợ cơ chế đăng nhập liên thông một chạm thông qua nhiều mạng xã hội khác nhau ngoài việc chia sẻ liên kết.

Hướng phát triển

  1. Tiếp tục hoàn thiện và tối ưu hóa hiệu năng truy vấn của cơ sở dữ liệu MongoDB đối với lượng dữ liệu bài viết lớn.
  2. Tích hợp sâu các mô hình AI/Machine Learning trong việc tự động nhận diện ngôn từ độc hại trước khi bài viết được xuất bản và nâng cao thuật toán gợi ý bài viết cá nhân hóa cho từng người dùng.
  3. Mở rộng phát triển ứng dụng di động (Mobile App) đa nền tảng để đáp ứng xu hướng truy cập từ thiết bị cầm tay.
  4. Bổ sung các phương thức đăng nhập bằng tài khoản Google, Facebook, Apple nhằm tối ưu trải nghiệm người dùng.

Giá trị tham khảo

Khóa luận là tài liệu tham khảo có giá trị học thuật và kỹ thuật thực tiễn cho các đối tượng sau:

  • Sinh viên ngành Công nghệ phần mềm, Công nghệ thông tin: Tài liệu hữu ích cho việc xây dựng đồ án tốt nghiệp, đồ án môn học liên quan đến lập trình web full-stack sử dụng MERN Stack.
  • Lập trình viên và người nghiên cứu hệ thống: Cung cấp tài liệu tham khảo chi tiết về phương pháp mô hình hóa phần mềm chuẩn chỉ, bao gồm danh mục usecase, bảng đặc tả luồng sự kiện chính/ngoại lệ và lược đồ tuần tự.

Các nội dung có giá trị tham khảo cao nhất trong tài liệu:

  • Hệ thống đặc tả ca sử dụng chi tiết (Chương 3) và tập hợp biểu đồ tuần tự (Chương 4) có cấu trúc logic chặt chẽ.
  • Mô hình phân quyền 3 lớp (Admin - Editor - User) và giải pháp xử lý báo cáo vi phạm nội dung (Ticket Report).
  • Cách thức tổ chức và thiết kế giao diện người dùng bằng ReactJS kết hợp TypeScript và quy trình quản lý dự án trên JIRA.

Câu hỏi thường gặp

1. Đề tài sử dụng ngăn xếp công nghệ (tech stack) nào để xây dựng hệ thống?
Khóa luận sử dụng bộ công nghệ MERN Stack kết hợp TypeScript, bao gồm: ReactJS cho tầng giao diện người dùng (Front-End), NodeJS và ExpressJS cho tầng xử lý máy chủ (Back-End), cơ sở dữ liệu NoSQL MongoDB để lưu trữ dữ liệu dạng tài liệu, và kiến trúc REST API để kết nối các tầng.

2. Hệ thống đã khảo sát nền tảng thực tế nào và chỉ ra những điểm hạn chế gì của nền tảng đó?
Hệ thống tiến hành khảo sát website mạng xã hội chia sẻ tri thức Spiderum (https://spiderum.com). Các điểm hạn chế được nhóm nghiên cứu chỉ ra gồm: chưa phân chia danh mục cụ thể, chưa phân hệ người dùng rõ ràng, chưa hỗ trợ đăng nhập tiện lợi qua nhiều mạng xã hội, chưa tích hợp các hệ thống AI mới và tính năng trò chuyện còn đơn giản (chưa hỗ trợ tương tác hình ảnh/nhãn dán).

3. Cơ chế kiểm duyệt nội dung tự động trong đồ án được thiết lập và vận hành như thế nào?
Hệ thống xây dựng tính năng lập lịch tự động định kỳ vào lúc 23:59:59 mỗi ngày. Tác vụ này tự động quét các bài viết trên hệ thống theo các tiêu chí cấu hình của Quản trị viên, tự động phát hiện bài viết vi phạm quy tắc cộng đồng để cảnh báo, nhắc nhở hoặc xóa nội dung và gửi email thông báo tới người dùng.

4. Phân hệ người dùng trong hệ thống được chia thành những vai trò nào và quyền hạn khác nhau ra sao?
Hệ thống phân định 3 vai trò:

  • Người dùng (User): Tạo bài viết/bản thảo, bình luận, thích, lưu, chia sẻ bài viết, tạo/tham gia nhóm, nhắn tin thời gian thực, báo cáo vi phạm.
  • Biên tập viên (Editor): Tiếp nhận, xem chi tiết, phê duyệt hoặc xóa các ticket báo cáo vi phạm, khóa tài khoản người gửi báo cáo sai.
  • Quản trị viên (Admin): Cấu hình hệ thống, quản lý người dùng (thêm, sửa, phân quyền, khóa/mở khóa), quản lý bài viết, nhóm, tag, xem thống kê và thiết lập lịch kiểm duyệt.

5. Tiến trình nghiên cứu công nghệ của nhóm tác giả có sự thay đổi nào theo đề cương?
Theo kế hoạch thực hiện ghi nhận trong đề cương, từ tháng 08/2023 đến tháng 01/2024 nhóm đã tìm hiểu công nghệ Java Spring Boot và MySQL. Từ tháng 02/2024 đến tháng 06/2024, nhóm chuyển đổi toàn diện sang nghiên cứu và xây dựng hệ thống bằng MERN Stack (ReactJS, NodeJS, ExpressJS, MongoDB).


Kết luận

Đồ án tốt nghiệp "Xây dựng website mạng xã hội sử dụng MERN STACK" của sinh viên Lê Trương Ngọc Hải và Phan Đại Đăng Khoa đã hoàn thành việc nghiên cứu, phân tích, thiết kế và cài đặt một nền tảng mạng xã hội chia sẻ tri thức hoàn chỉnh. Đề tài vận dụng hiệu quả ngăn xếp công nghệ MERN Stack, giải quyết tốt bài toán phân quyền 3 cấp độ (Admin, Editor, User), cơ chế kiểm duyệt nội dung tự động và tương tác thời gian thực. Khóa luận cung cấp nguồn tài liệu kỹ thuật có giá trị thực tiễn cao về quy trình công nghệ phần mềm và mô hình hóa hệ thống thông tin.