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

Trong bối cảnh cuộc Cách mạng công nghiệp 4.0 và sự phổ cập của Internet, nhu cầu chia sẻ thông tin, trao đổi trực tuyến trở thành một phần thiết yếu trong đời sống xã hội. Đặc biệt, giai đoạn dịch bệnh Covid-19 bùng phát với các đợt giãn cách xã hội kéo dài đã thúc đẩy mạnh mẽ quá trình chuyển dịch từ học tập, làm việc trực tiếp sang môi trường trực tuyến. Nhu cầu tương tác, duy trì liên lạc từ xa gia tăng nhanh chóng, đòi hỏi các nền tảng mạng xã hội phải đáp ứng tính linh hoạt, thuận tiện và bảo mật cao. Xuất phát từ bối cảnh thực tiễn này, nhóm tác giả tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh đã thực hiện đồ án tốt nghiệp với đề tài "Xây dựng website mạng xã hội sử dụng Django và ReactJS" (Mã tài liệu: SKL012273, bảo vệ tháng 12/2023).

Mục tiêu nghiên cứu và xây dựng hệ thống được xác định gồm các nhiệm vụ cụ thể sau:

  1. Áp dụng các kiến thức chuyên ngành Công nghệ Thông tin đã tiếp thu vào việc xây dựng một dự án phần mềm hoàn chỉnh.
  2. Xây dựng giao diện website mạng xã hội đáp ứng tiêu chí trực quan, dễ nhìn và dễ sử dụng đối với người dùng.
  3. Cung cấp không gian tương tác trực tuyến cho phép người dùng kết nối, chia sẻ thông tin, cập nhật tin tức hằng ngày, chia sẻ hình ảnh và sở thích cá nhân.
  4. Xây dựng phân hệ quản trị website hỗ trợ vận hành và quản lý dữ liệu một cách thuận tiện.
  5. Đảm bảo an toàn và bảo mật thông tin cá nhân của người dùng trên hệ thống.

Đối tượng nghiên cứu của đề tài gồm hai nhóm chính:

  • Đối với người dùng: Trải nghiệm kết nối, tương tác thông tin, liên lạc đa phương tiện và chia sẻ hoạt động đời sống thường nhật trên nền tảng web.
  • Đối với nhóm nghiên cứu: Phương pháp phân tích, thiết kế hệ thống mạng xã hội; quy trình làm việc với các ngôn ngữ lập trình, thư viện, cơ sở dữ liệu và công cụ triển khai phần mềm hiện đại.

Phạm vi nghiên cứu tập trung vào việc thiết kế và phát triển các nhóm chức năng cốt lõi của một mạng xã hội: xác thực tài khoản (đăng ký, đăng nhập, đổi mật khẩu), quản lý tương tác bài viết (xem, tạo, sửa, xóa, bình luận, tương tác cảm xúc), quản lý mối quan hệ người dùng (tìm kiếm bạn bè, gửi/nhận yêu cầu kết bạn, hủy kết bạn), liên lạc thời gian thực (nhắn tin văn bản, gọi thoại, gọi video) cùng các chức năng quản trị hệ thống (quản lý bài viết, quản lý tài khoản người dùng, quản trị viên và tệp tin).

Cơ sở lý thuyết và phương pháp

Đồ án áp dụng phương pháp thiết kế và phát triển hệ thống phần mềm hướng đối tượng, kết hợp khảo sát hiện trạng thực tế, mô hình hóa yêu cầu và thực nghiệm kiểm thử phần mềm. Toàn bộ nền tảng kỹ thuật và công nghệ được lựa chọn dựa trên sự tương thích về hiệu năng, khả năng mở rộng và tính bảo mật.

Công nghệ / Công cụ Phân loại Vai trò và đặc tính kỹ thuật trong hệ thống
Django Web Framework (Backend) Framework viết bằng ngôn ngữ Python theo mô hình MVT (Model-View-Template); cung cấp các thành phần tái sử dụng, xây dựng hệ thống REST API, hỗ trợ WebSocket server cho truyền thông thời gian thực và quản lý thông báo.
ReactJS Frontend Library Thư viện JavaScript mã nguồn mở; sử dụng cú pháp JSX tối ưu hóa kết xuất giao diện, cơ chế luồng dữ liệu một chiều (single-way data flow); tích hợp thư viện react-query để tối ưu hóa việc tìm nạp (fetching), lưu bộ nhớ đệm (caching) và cập nhật dữ liệu bất đồng bộ từ server.
PostgreSQL Hệ quản trị CSDL Cơ sở dữ liệu quan hệ mã nguồn mở tuân thủ chuẩn ANSI/ISO SQL; hỗ trợ hướng đối tượng, bảo đảm tính toàn vẹn dữ liệu qua 4 thuộc tính ACID (Atomicity, Consistency, Isolation, Durability).
JSON Web Token (JWT) Chuẩn xác thực Chuẩn mở RFC 7519 dùng để truyền tải thông tin an toàn dưới dạng đối tượng JSON; cấu trúc gồm 3 phần: Header (loại token và thuật toán mã hóa), Payload (thông tin người dùng), Signature (chữ ký số tạo từ khóa bí mật).
Docker Containerization Nền tảng đóng gói ứng dụng vào các container biệt lập; cho phép thiết lập môi trường phát triển nhất quán, khởi chạy nhanh và thuận tiện khi triển khai.
VideoSDK Nền tảng API/SDK giao tiếp Cung cấp giao diện lập trình cho tính năng phát trực tiếp, gọi thoại và gọi video thời gian thực; tích hợp bộ lọc khử tiếng ồn, tốc độ bit thích ứng. Mô hình định giá: 10.000 phút miễn phí/tháng; cuộc gọi video là 0,003 USD/người/phút; cuộc gọi thoại là 0,006 USD/người/phút; ghi hình đám mây là 0,015 USD/phút.
DigitalOcean Hạ tầng đám mây (IaaS) Cung cấp máy ảo điện toán (Droplets) chạy hệ điều hành Linux; cam kết thời gian hoạt động (uptime) 99,99% theo thỏa thuận mức dịch vụ (SLA) phục vụ triển khai ứng dụng.
CircleCI Nền tảng CI/CD Tự động hóa quy trình tích hợp và kiểm thử liên tục; hỗ trợ thực thi song song thông qua tệp cấu hình .yml, quản lý bộ nhớ đệm và Orbs tích hợp với Docker.

Về nguồn dữ liệu và phương pháp khảo sát, nhóm tác giả tiến hành phân tích đối sánh ba nền tảng mạng xã hội tiêu biểu trên thị trường gồm Facebook, Twitter và Instagram nhằm đánh giá ưu, nhược điểm về giao diện, tính năng tương tác và cơ chế bảo mật, làm căn cứ xác định các yêu cầu chức năng và phi chức năng cho hệ thống.

Thiết kế và triển khai

Hệ thống được thiết kế theo mô hình tách biệt giữa giao diện phía máy khách (Frontend) và máy chủ logic xử lý dữ liệu (Backend), giao tiếp thông qua giao thức HTTP/HTTPS với định dạng dữ liệu JSON cùng các kết nối WebSocket/WebRTC cho tương tác thời gian thực.

Mô hình hóa yêu cầu và hành vi hệ thống

Hệ thống xác định hai tác tử (Actors) chính: Người dùng (User) và Quản trị viên (Admin).

  • Phía Người dùng: Tương tác với 19 use case chính bao gồm: Đăng ký, Đăng nhập, Đăng xuất, Quên mật khẩu, Thay đổi mật khẩu, Xem thông tin chi tiết bài viết, Tìm kiếm bạn bè, Chỉnh sửa thông tin tài khoản, Kết bạn, Hủy kết bạn, Xem danh sách yêu cầu kết bạn đã gửi/nhận được, Tạo bài viết, Cập nhật bài viết, Xóa bài viết, Thêm/sửa/xóa bình luận, Yêu thích bài viết, Xem thông báo, Chat text, Video Call, Audio Call.
  • Phía Quản trị viên: Tương tác với các use case quản lý chuyên sâu: Đăng nhập Admin, Đăng xuất Admin, Quản lý hình ảnh, Quản lý danh sách bài viết, Quản lý người dùng (Thêm/Sửa/Xóa tài khoản người dùng), Quản lý quản trị viên (Thêm/Sửa/Xóa tài khoản quản trị viên), Quản lý tệp tin.

Hành vi tương tác giữa các lớp đối tượng trong hệ thống được chi tiết hóa thông qua 42 lược đồ tuần tự (Sequence Diagram), mô tả chi tiết quy trình xử lý dữ liệu từ giao diện máy khách, tầng định tuyến API của Django, tầng xử lý nghiệp vụ cho tới tầng truy vấn cơ sở dữ liệu PostgreSQL.

Thiết kế cơ sở dữ liệu

Cơ sở dữ liệu được thiết kế thông qua Lược đồ thực thể kết hợp (Entity-Relationship Diagram - ERD) và chuẩn hóa thành các bảng dữ liệu chuyên biệt trong PostgreSQL nhằm đảm bảo toàn vẹn dữ liệu. Các bảng chính trong hệ thống bao gồm: bảng tài khoản người dùng, bảng phân quyền quản trị, bảng bài viết, bảng Post Interaction (lưu trữ thông tin thả cảm xúc và tương tác đối với bài viết), bảng Post Comment (lưu trữ nội dung và liên kết của các bình luận), bảng phòng trò chuyện (Room Chat), bảng thành viên phòng chat, bảng tin nhắn và bảng Message_File (quản lý tệp tin đa phương tiện gửi kèm tin nhắn).

Triển khai giao diện và kiểm thử

Giao diện người dùng và quản trị được xây dựng trên nền tảng ReactJS, phân chia thành các thành phần giao diện (components) rõ ràng:

  • Giao diện người dùng: Trang Đăng nhập, Đăng ký, Trang chủ (Newsfeed), Trang tạo/chỉnh sửa/xóa bài viết, Trang chi tiết bài viết, Khung bình luận, Trang cài đặt, Đổi mật khẩu, Trang thông báo, Trang trợ giúp (Help), Trang danh sách bạn bè và yêu cầu kết bạn, Trang thông tin cá nhân và chỉnh sửa hồ sơ, Giao diện phòng chat và chi tiết nhắn tin.
  • Giao diện quản trị: Bảng điều khiển tổng quan (Dashboard), Header quản lý, Trang quản lý danh sách bài viết, Trang quản lý/thêm/sửa thông tin người dùng, Trang quản lý/thêm/sửa thông tin quản trị viên.

Quá trình kiểm thử được thiết lập thông qua các kịch bản kiểm thử chức năng (Functional Testing) và kiểm thử phi chức năng (Non-functional Testing), tập trung vào các luồng kiểm thử quan trọng: kiểm thử đăng ký tài khoản (Bảng 5.6), kiểm thử đăng nhập (Bảng 5.7), kiểm thử quên mật khẩu (Bảng 5.8) và kiểm thử đăng bài viết mới (Bảng 5.9).

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

Chương 1. Phần mở đầu

Chương này trình bày tính cấp thiết của đề tài trong bối cảnh chuyển đổi số và hậu dịch bệnh Covid-19. Nhóm tác giả xác định mục tiêu xây dựng một nền tảng mạng xã hội kết nối trực tuyến dễ sử dụng, bảo mật và hỗ trợ quản lý hiệu quả. Đối tượng và phạm vi nghiên cứu được phân định rành mạch giữa nghiệp vụ mạng xã hội cho người dùng và các chức năng quản trị hệ thống. Chương 1 cũng trình bày bảng phân công nhiệm vụ chi tiết của 3 thành viên:

Thành viên thực hiện MSSV Nhiệm vụ đảm trách chính
Lê Nguyễn Hùng Anh 19110322 Thiết kế cơ sở dữ liệu; xử lý Backend; vẽ Sơ đồ lớp; tổng hợp lý thuyết; thiết kế Use case; thực hiện Triển khai (Deploy).
Lưu Ngạn Lâm 20110513 Thiết kế giao diện; xây dựng Frontend; vẽ Sơ đồ tuần tự; thiết kế Use case; viết và chỉnh sửa báo cáo.
Phạm Ngọc Đức 19110157 Thiết kế giao diện; xây dựng Frontend; viết và chỉnh sửa báo cáo; tổng hợp lý thuyết; thực hiện kiểm thử phần mềm.

Chương 2. Cơ sở lý thuyết và công nghệ

Chương 2 trình bày chi tiết về các khái niệm, cơ chế hoạt động, ưu điểm và nhược điểm của các công nghệ được áp dụng:

  • Django: Phân tích kiến trúc MVT, khả năng tái sử dụng component và ứng dụng làm chat server/websocket, notification server.
  • ReactJS: Trình bày về cú pháp JSX, cơ chế luồng dữ liệu một chiều và lợi thế của thư viện react-query trong việc đơn giản hóa hook tìm nạp/cập nhật dữ liệu từ máy chủ so với Redux hoặc các hook truyền thống (useEffect, useState).
  • PostgreSQL: Đánh giá khả năng đáp ứng 4 thuộc tính ACID, hỗ trợ đối tượng và tính toàn vẹn dữ liệu.
  • JSON Web Token (JWT): Mô tả cấu trúc 3 thành phần (Header, Payload, Signature) theo tiêu chuẩn RFC 7519 phục vụ việc xác thực phiên người dùng.
  • Docker, VideoSDK, DigitalOcean, CircleCI: Giới thiệu vai trò của containerization, API truyền thông trực tiếp cho cuộc gọi thoại/video, máy ảo Linux Droplet phục vụ lưu trữ trang web và quy trình tích hợp liên tục tự động hóa CI/CD.

Chương 3. Khảo sát hiện trạng và mô hình hoá yêu cầu

Chương này thực hiện phân tích khảo sát 3 mạng xã hội phổ biến làm căn cứ thực tiễn:

  1. Facebook: Ưu điểm giao diện trực quan, có thuật toán AI phân tích xu hướng; nhược điểm còn tồn tại nhiều tài khoản ảo và nội dung chưa kiểm duyệt.
  2. Twitter: Ưu điểm cập nhật xu hướng toàn cầu nhanh; nhược điểm kiểm duyệt thông tin chưa chặt chẽ, giới hạn độ tuổi người dùng.
  3. Instagram: Ưu điểm bảo mật cao, giao diện tối giản, chia sẻ hình ảnh/video chất lượng cao; nhược điểm chức năng tương tác bài viết còn hạn chế hơn các mạng xã hội tổng hợp.

Từ khảo sát, chương 3 xác định danh mục các yêu cầu chức năng (12 chức năng người dùng, 7 chức năng quản trị) và yêu cầu phi chức năng (tốc độ tìm kiếm, bảo mật dữ liệu, thời gian phản hồi, khả năng mở rộng). Nhóm xây dựng 2 lược đồ Use case tổng quát cho Người dùng (Hình 3.4) và Quản trị viên (Hình 3.5), kèm theo hệ thống bảng đặc tả usecase từ Bảng 3.1 đến Bảng 3.35, bao gồm các luồng sự kiện cơ bản, điều kiện tiên quyết, hậu điều kiện và luồng thay thế khi có lỗi phát sinh.

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

Chương 4 tập trung vào thiết kế kỹ thuật chi tiết của hệ thống:

  • Lược đồ thực thể kết hợp (ERD): Định nghĩa các thực thể, mối quan hệ và cấu trúc các bảng dữ liệu trong PostgreSQL (Post Interaction, Post Comment, Message_File...).
  • Lược đồ tuần tự: Xây dựng 42 sơ đồ tuần tự mô tả chi tiết trình tự tương tác thông điệp giữa các đối tượng cho toàn bộ các chức năng của Người dùng và Quản trị viên.
  • Thiết kế giao diện và đối tượng tương tác: Thiết kế chi tiết hệ thống giao diện cho người dùng (từ Hình 4.43 đến Hình 4.65) và quản trị viên (từ Hình 4.66 đến Hình 4.76), kèm theo các bảng phân tích đối tượng giao diện (Bảng 4.14 đến Bảng 4.47).

Chương 5. Cài đặt và kiểm thử

Chương 5 trình bày việc thiết lập môi trường và đánh giá hệ thống:

  • Yêu cầu hệ thống: Quy định cấu hình phần cứng máy tính thực thi (Bảng 5.1) và các yêu cầu về phần mềm hệ thống (Bảng 5.2).
  • Kế hoạch và thực nghiệm kiểm thử: Phân công nhiệm vụ kiểm thử (Bảng 5.5), xây dựng nội dung kiểm thử chức năng (Bảng 5.3) và phi chức năng (Bảng 5.4). Chi tiết hóa các trường hợp kiểm thử cho chức năng Đăng ký (Bảng 5.6), Đăng nhập (Bảng 5.7), Quên mật khẩu (Bảng 5.8) và Đăng bài viết mới (Bảng 5.9).
  • Đánh giá chung: Tổng kết các kết quả đạt được về mặt ứng dụng, chỉ ra các nhược điểm còn tồn tại và vạch ra định hướng phát triển trong tương lai.

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

Đồ án đã xây dựng thành công một ứng dụng web mạng xã hội hoàn chỉnh với các kết quả cụ thể được ghi nhận trong báo cáo:

  • Xây dựng hoàn chỉnh hệ thống chức năng người dùng: Đã triển khai đầy đủ các tính năng cơ bản của một mạng xã hội bao gồm tạo và tương tác bài viết (đăng bài có đính kèm ảnh/video, bình luận, chỉnh sửa, xóa, thả cảm xúc), tương tác bạn bè (tìm kiếm theo bộ lọc, gửi lời mời kết bạn, chấp nhận/từ chối, hủy kết bạn), hệ thống thông báo thời gian thực và chức năng liên lạc đa phương tiện (chat văn bản, gọi thoại Audio Call, gọi video Video Call thông qua VideoSDK).
  • Xây dựng phân hệ quản trị (Admin Dashboard): Cung cấp đầy đủ công cụ quản lý dữ liệu tập trung gồm quản lý danh sách bài viết, quản lý/thêm/sửa tài khoản người dùng và tài khoản quản trị viên, quản lý tệp tin đa phương tiện trên hệ thống.
  • Hiện thực hóa kiến trúc hiện đại: Ứng dụng thành công mô hình Single Page Application với ReactJS kết hợp thư viện react-query tại Frontend và RESTful API với Django tại Backend; tích hợp xác thực bảo mật JWT theo chuẩn RFC 7519 và container hóa hệ thống bằng Docker.
  • Đóng góp về mặt học thuật và thực tiễn của nhóm sinh viên: Đồ án thể hiện quy trình phân tích, thiết kế phần mềm bài bản từ khâu khảo sát hiện trạng, mô hình hóa usecase, thiết kế tuần tự, thiết kế CSDL quan hệ đến triển khai thực tế và kiểm thử phần mềm, tạo nền tảng kinh nghiệm thực tiễn cho các dự án phần mềm tiếp theo của các thành viên.

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

Dựa trên nội dung tự đánh giá trong báo cáo, đồ án ghi nhận các hạn chế và hướng mở rộng như sau:

  • Hạn chế:
    • Ứng dụng chưa thật sự hoàn chỉnh ở một số khía cạnh nghiệp vụ chuyên sâu và trải nghiệm người dùng nâng cao.
    • Dự án còn tồn tại những hạn chế về mặt kỹ thuật và kinh nghiệm thực tế của nhóm sinh viên trong việc quản lý, vận hành một dự án phần mềm quy mô lớn trong khoảng thời gian thực hiện ngắn.
    • Hạ tầng DigitalOcean phụ thuộc chính vào môi trường Linux và chính sách tính phí máy ảo ngay cả khi tắt phiên bản (instances).
  • Hướng phát triển tiếp theo:
    • Tiếp tục hoàn thiện và nâng cấp các tính năng tương tác người dùng, cải thiện tính mượt mà và tối ưu hóa hiệu năng tải trang của giao diện.
    • Nâng cao tính năng bảo mật dữ liệu và kiểm duyệt nội dung tự động trên bài viết và bình luận.
    • Mở rộng thêm các dịch vụ phản hồi hai chiều, tăng cường kênh hỗ trợ kỹ thuật trực tiếp giữa người dùng và ban quản trị hệ thống.

Giá trị tham khảo

Tài liệu khóa luận tốt nghiệp này có giá trị tham khảo thiết thực đối với:

  • Sinh viên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm: Cung cấp tài liệu mẫu hoàn chỉnh về đồ án tốt nghiệp công nghệ web, bao gồm đầy đủ các bước phân tích yêu cầu, vẽ biểu đồ UML (Use case, Sequence Diagram), thiết kế cơ sở dữ liệu quan hệ và lập tài liệu kiểm thử phần mềm.
  • Người phát triển ứng dụng web Full-stack với Django và ReactJS: Có thể tham khảo cách tích hợp thư viện react-query để tối ưu hóa quản lý trạng thái và tìm nạp dữ liệu từ Django API, kỹ thuật xác thực qua JSON Web Token (JWT) và giải pháp tích hợp cuộc gọi âm thanh/video thời gian thực bằng VideoSDK.

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

1. Hệ thống sử dụng công nghệ nào để xử lý chức năng gọi thoại và gọi video trực tuyến?
Hệ thống sử dụng giải pháp VideoSDK tích hợp qua API/SDK, hỗ trợ khử tiếng ồn cho phòng âm thanh HD, truyền phát tốc độ bit thích ứng và cuộc gọi video đa nền tảng với gói miễn phí 10.000 phút/tháng từ nhà cung cấp.

2. Thư viện react-query đóng vai trò gì trong kiến trúc Frontend của ứng dụng?
Thư viện react-query được nhóm tác giả sử dụng để tìm nạp (fetching), lưu bộ nhớ đệm (caching) và cập nhật dữ liệu bất đồng bộ từ máy chủ thông qua các React hooks, giúp tinh gọn mã nguồn và thay thế các phương thức quản lý trạng thái phức tạp hơn như Redux hay việc kết hợp thủ công giữa useEffect và useState.

3. Cơ chế xác thực người dùng trong hệ thống được hiện thực như thế nào?
Hệ thống sử dụng chuẩn JSON Web Token (JWT - RFC 7519) để xác thực không lưu trạng thái phiên (stateless). Chuỗi token gồm 3 phần: Header (chứa kiểu dữ liệu và thuật toán mã hóa), Payload (chứa dữ liệu người dùng như username, userId) và Signature (chữ ký số tạo bởi thuật toán mã hóa kết hợp chuỗi khóa bí mật secret key).

4. Phân hệ Quản trị viên (Admin) hỗ trợ những chức năng quản lý chính nào?
Phân hệ quản trị bao gồm các chức năng: Đăng nhập/Đăng xuất Admin, Đổi mật khẩu, Dashboard thống kê, Quản lý hình ảnh/tệp tin, Quản lý danh sách bài viết, Quản lý tài khoản người dùng (xem danh sách, thêm, chỉnh sửa, xóa) và Quản lý tài khoản quản trị viên (thêm, chỉnh sửa, xóa).

Kết luận

Đồ án tốt nghiệp "Xây dựng website mạng xã hội sử dụng Django và ReactJS" do nhóm sinh viên Lê Nguyễn Hùng Anh, Lưu Ngạn Lâm và Phạm Ngọc Đức thực hiện dưới sự hướng dẫn của TS. Lê Văn Vinh đã hoàn thành đầy đủ các mục tiêu đề ra. Báo cáo phản ánh một quy trình phát triển phần mềm chuẩn mực từ khảo sát hiện trạng, mô hình hóa yêu cầu, thiết kế kiến trúc/CSDL đến triển khai thực nghiệm và kiểm thử. Hệ thống đã hiện thực hóa thành công một mạng xã hội với đầy đủ các tính năng chia sẻ bài viết, tương tác bạn bè, liên lạc đa phương tiện và phân hệ quản trị dữ liệu tập trung.