Bối cảnh và vấn đề nghiên cứu
Đồ án tốt nghiệp "Phát triển ứng dụng chia sẻ video ngắn - ShortVibe" được thực hiện bởi sinh viên Lê Nguyễn Đăng Khoa (MSSV: 19034103, Lớp DH19CT, Khóa học 2019–2023), dưới sự hướng dẫn của TS. Phan Ngọc Hoàng tại Khoa Kỹ thuật – Công nghệ, Trường Đại học Bà Rịa – Vũng Tàu, hoàn thành vào tháng 05 năm 2023.
Lý do chọn đề tài xuất phát từ sự phát triển của hạ tầng Internet và thiết bị điện thoại thông minh, kéo theo sự thay đổi trong hành vi tiêu thụ nội dung số. Người dùng có xu hướng tìm kiếm các nội dung ngắn gọn, trực quan, giải trí cao và dễ tiếp cận. Sự thành công của các nền tảng mạng xã hội từ Friendster, MySpace, Facebook (năm 2004 đạt hơn 2,8 tỷ người dùng vào năm 2022) cho đến sự bùng nổ của định dạng video ngắn qua TikTok (2016), Instagram Reels và YouTube Shorts đã chứng minh đây là phương thức truyền thông và quảng cáo hiệu quả. Ứng dụng ShortVibe được xây dựng nhằm cung cấp giải pháp mạng xã hội video ngắn đáp ứng nhu cầu giải trí và kết nối trực tuyến.
Mục tiêu nghiên cứu được tác giả xác định cụ thể trong văn bản gồm:
- Trao đổi thông tin giữa người dùng.
- Quản lý nội dung chia sẻ.
- Xem thông tin cá nhân.
- Quản lý nâng cao cho người dùng quản trị.
- Tiếp cận nội dung được chia sẻ.
Nhiệm vụ nghiên cứu gắn liền với việc xây dựng 7 nhóm chức năng cốt lõi:
- Quản lý bài đăng
- Quản lý quan hệ người dùng
- Quản lý thông báo
- Quản lý hội thoại
- Quản lý bình luận
- Quản lý tương tác bài đăng
- Quản lý người dùng
Đối tượng nghiên cứu là quy trình phân tích, thiết kế và lập trình ứng dụng mạng xã hội chia sẻ video ngắn trên nền tảng web. Phạm vi không gian và thời gian nghiên cứu thực hiện trong khuôn khổ chương trình đào tạo kỹ sư Công nghệ thông tin tại Trường Đại học Bà Rịa – Vũng Tàu từ năm 2019 đến năm 2023.
Cơ sở lý thuyết và công nghệ áp dụng
Đồ án tập trung vào các công nghệ lập trình web hiện đại trên nền tảng ngôn ngữ Python, phân chia thành các tầng kiến trúc rõ ràng:
| Thành phần kỹ thuật |
Công nghệ / Thư viện sử dụng |
Vai trò trong hệ thống |
| Ngôn ngữ chính |
Python (phiên bản 3.x) |
Xử lý logic phía máy chủ (backend) |
| Web Framework |
Django |
Khung phát triển ứng dụng theo kiến trúc MVC, tích hợp ORM, bảo mật và trang quản trị |
| Xử lý thời gian thực |
Django-Channels |
Mở rộng xử lý kết nối WebSocket và streaming HTTP phục vụ tính năng hội thoại |
| Message Broker & Cache |
Redis |
Cơ sở dữ liệu NoSQL lưu trữ bộ đệm và điều phối thông điệp bất đồng bộ cho Channels |
| Template Engine |
Jinja2 |
Biên dịch mẫu giao diện hiển thị dữ liệu động phía máy khách |
| Hệ quản trị CSDL |
MySQL |
Hệ quản trị cơ sở dữ liệu quan hệ lưu trữ dữ liệu người dùng, bài đăng và tương tác |
| Giao diện người dùng |
HTML, CSS, JavaScript |
Xây dựng cấu trúc, định dạng thẩm mỹ và xử lý tương tác giao diện |
| Thư viện hỗ trợ |
Pillow, PyJWT, Django-ckeditor |
Xử lý hình ảnh ảnh đại diện (Pillow), quản lý token xác thực (PyJWT), soạn thảo văn bản (ckeditor) |
| Môi trường lập trình |
Visual Studio Code (VS Code) |
Công cụ soạn thảo mã nguồn và quản lý dự án |
Cơ sở lý thuyết của đồ án cũng hệ thống hóa các giai đoạn tiến hóa của Python: Python 0.x (1991), Python 1.x (1994), Python 2.x (2000, chính thức dừng hỗ trợ năm 2020) và Python 3.x (ra mắt năm 2008, hỗ trợ toàn diện Unicode, cú pháp hiện đại và xử lý bất đồng bộ).
Thiết kế và triển khai hệ thống
Hệ thống mã nguồn ShortVibe được tổ chức phân rã theo 6 thư mục chức năng chính: myproject (cấu hình dự án), blog (bài đăng, bình luận, tương tác), chat (hội thoại riêng tư và nhóm), friend (bạn bè, lời mời kết bạn), notification (thông báo), và users (thông tin người dùng, danh sách hạn chế).
Cơ sở dữ liệu của ứng dụng được xây dựng trên hệ quản trị MySQL gồm 26 bảng dữ liệu, chia thành 4 nhóm nghiệp vụ chính:
| Nhóm nghiệp vụ |
Danh sách các bảng dữ liệu |
| Tài khoản & Quản trị hệ thống |
auth_user, auth_permission, django_content_type, auth_group, auth_group_permission, auth_user_user_permission, auth_user_groups, django_admin_log |
| Hồ sơ người dùng & Quan hệ xã hội |
users_profile, user_profile_following, user_blacklist, friend_friendrequest, friend_friendlist, friend_friendlist_friends |
| Bài đăng & Tương tác |
blog_post, blog_post_save, blog_comment, blog_post_likes, blog_comment_likes |
| Hội thoại thời gian thực & Thông báo |
chat_room, chat_chat, chat_roomgroup, chat_chatgroup, chat_roommempermit, chat_roomgroup_members, notification_notification |
Hệ thống áp dụng các ràng buộc kỹ thuật và logic nghiệp vụ chặt chẽ:
- Đăng tải bài đăng: Ràng buộc tệp video phải có kích thước dưới 10MB và đúng định dạng tệp video; bài đăng gồm tiêu đề và tệp đính kèm. Người dùng chỉ được sửa tiêu đề bài đăng của chính mình.
- Quản lý danh sách hạn chế: Khi đưa tài khoản khác vào bảng
user_blacklist, hệ thống thực hiện ẩn triệt để mọi dấu vết của hai bên, ngăn chặn việc xem trang cá nhân, xem bài đăng hoặc nhắn tin.
- Hội thoại riêng tư (
chat_room): Chỉ khởi tạo khi hai người dùng đã trở thành bạn bè thông qua cơ chế xác nhận lời mời kết bạn.
- Hội thoại nhóm (
chat_roomgroup): Trưởng nhóm có toàn quyền quản lý, bao gồm cập nhật thông tin nhóm, thêm thành viên, xóa thành viên, nhượng quyền trưởng nhóm hoặc giải tán nhóm.
- Xử lý bất đồng bộ: Sử dụng Django-Channels kết nối qua Redis để gửi nhận tin nhắn thời gian thực và quản lý cảm xúc tin nhắn.
Nội dung chính theo từng chương
Chương 1: Tổng quan
Chương 1 trình bày lịch sử hình thành của các nền tảng mạng xã hội từ thời kỳ đầu (Friendster, MySpace) đến thời kỳ bùng nổ của Facebook (năm 2004) và giai đoạn thống trị của định dạng video ngắn khởi đầu từ TikTok (2016), kéo theo sự tham gia của Facebook, YouTube và ByteDance. Tác giả làm rõ mục tiêu phát triển hệ thống ShortVibe, xác định 5 mục tiêu tổng thể, 7 nhóm chức năng cần xây dựng và chi tiết hóa mô tả bài toán kỹ thuật từ quản lý bài đăng, quan hệ người dùng, hội thoại thời gian thực đến chức năng quản trị hệ thống.
Chương 2: Cơ sở lý thuyết
Chương 2 phân tích cơ sở công nghệ được sử dụng để xây dựng ứng dụng web. Tác giả khảo cứu chi tiết lịch sử ngôn ngữ Python từ phiên bản sơ khai 0.x (năm 1991 bởi Guido van Rossum tại CWI với 3.000 dòng mã) qua phiên bản 1.x (1994), 2.x (2000–2020) và 3.x (2008 đến phiên bản 3.9 năm 2020). Nội dung đánh giá ưu điểm (cú pháp đơn giản, đa nền tảng, thư viện phong phú) và nhược điểm (tốc độ chậm hơn C++/Java). Bên cạnh đó, chương này phân tích nguyên lý của framework Django (mô hình MVC, ORM, bảo mật), phần mở rộng Django-Channels (xử lý WebSocket và HTTP streaming), hệ thống cơ sở dữ liệu NoSQL Redis đóng vai trò message broker, thư viện mẫu Jinja2, hệ quản trị MySQL, bộ ba HTML/CSS/JavaScript cùng các thư viện Pillow, PyJWT và Django-ckeditor.
Chương 3: Phân tích hệ thống
Chương 3 tập trung mô hình hóa yêu cầu chức năng và cấu trúc dữ liệu. Tác giả xây dựng 7 sơ đồ use-case hoàn chỉnh: use-case tổng quát của người dùng (Sơ đồ 3.1), quản lý bài đăng (Sơ đồ 3.2), quản lý quan hệ người dùng (Sơ đồ 3.3), quản lý hội thoại (Sơ đồ 3.4), quản lý người dùng (Sơ đồ 3.5), quản lý tương tác bài đăng (Sơ đồ 3.6) và chức năng của quản trị viên (Sơ đồ 3.7). Phần thiết kế cơ sở dữ liệu trình bày Sơ đồ cơ sở dữ liệu (Sơ đồ 3.8) và đặc tả chi tiết 26 bảng dữ liệu từ Bảng 3.1 đến Bảng 3.26, định nghĩa đầy đủ tên thuộc tính, kiểu dữ liệu và mô tả khóa chính, khóa ngoại.
Chương 4: Xây dựng ứng dụng
Chương 4 ghi nhận kết quả triển khai giao diện và chức năng thông qua 21 phân hệ màn hình (từ Hình 4.7 đến Hình 4.66):
- Luồng xác thực: Giao diện giới thiệu, đăng ký (ràng buộc dữ liệu và mã Captcha), đăng nhập, gửi yêu cầu đặt lại mật khẩu qua email, thông báo thành công và đặt lại mật khẩu mới.
- Luồng video và tương tác: Trang chủ hiển thị video ngắn, trang chi tiết bài đăng hỗ trợ cả hai tỷ lệ video dọc và video ngang, giao diện cập nhật tiêu đề, giao diện xóa bài đăng, danh sách xem sau và danh sách yêu thích.
- Luồng xã hội và hội thoại: Danh sách bài đăng theo dõi, thông báo tương tác, thanh tìm kiếm bắt buộc nhập giá trị, danh sách hội thoại riêng/nhóm, phòng chat riêng (bắt buộc là bạn bè), phòng chat nhóm (phân quyền trưởng nhóm), quản lý danh sách chặn hạn chế.
- Luồng cá nhân và quản trị: Trang cá nhân, điều chỉnh kích thước ảnh đại diện, xác nhận đăng xuất và hệ thống giao diện quản trị viên Django Admin quản lý danh sách đối tượng, thêm/sửa/xóa bài đăng và kiểm soát dữ liệu toàn trang.
Chương 5: Kết luận
Chương 5 đúc kết các kết quả đạt được trong việc hoàn thành hệ thống phần mềm mạng xã hội ShortVibe trên môi trường web. Tác giả tự đánh giá mức độ hoàn thiện của hệ thống chức năng và vạch ra các hướng phát triển kỹ thuật nhằm mở rộng ứng dụng trong các giai đoạn tiếp theo.
Kết quả và đóng góp
Về kết quả kỹ thuật, đồ án đã hiện thực hóa thành công các chỉ tiêu đề ra:
- Xây dựng hoàn chỉnh nền tảng web mạng xã hội ShortVibe với 7 module nghiệp vụ hoạt động ổn định trên kiến trúc framework Django kết hợp ngôn ngữ Python.
- Thiết lập hệ thống cơ sở dữ liệu chuẩn hóa gồm 26 bảng trên MySQL, đáp ứng đầy đủ quan hệ giữa các thực thể người dùng, nội dung bài đăng, tương tác và tin nhắn.
- Tích hợp thành công giao thức WebSocket thông qua extension Django-Channels và message broker Redis, cho phép nhắn tin thời gian thực trong hội thoại riêng tư và hội thoại nhóm kèm biểu thị cảm xúc.
- Triển khai cơ chế quản lý tệp tin video đa dạng với khả năng thích ứng giao diện cho cả video tỷ lệ dọc và tỷ lệ ngang, kiểm soát chặt chẽ dung lượng tệp dưới 10MB.
- Hoàn thiện 21 phân hệ giao diện người dùng cùng hệ thống quản trị chuyên sâu hỗ trợ kiểm soát nội dung và người dùng hệ thống.
Về đóng góp, tác giả đã cung cấp một giải pháp kỹ thuật kết hợp giữa mô hình MVC truyền thống của Django với cơ chế hướng sự kiện bất đồng bộ của Channels và Redis. Đồ án giải quyết trọn vẹn bài toán xây dựng một mạng xã hội video ngắn từ khâu xác thực, kiểm soát quyền riêng tư (danh sách đen loại bỏ dấu vết hai chiều) đến phân quyền hội thoại nhóm.
Hạn chế và hướng nghiên cứu tiếp
Hạn chế của đồ án:
- Hệ thống mới được triển khai và thử nghiệm trên nền tảng web máy tính, chưa được tối ưu hóa thành ứng dụng di động độc lập.
- Dung lượng tệp video chia sẻ bị giới hạn cứng dưới 10MB để giảm tải cho máy chủ, chưa hỗ trợ xử lý các video có độ phân giải cao hoặc thời lượng dài hơn.
- Tính năng hội thoại riêng tư phụ thuộc hoàn toàn vào điều kiện hai bên phải là bạn bè, chưa hỗ trợ chế độ nhận tin nhắn từ người lạ.
Hướng nghiên cứu tiếp:
- Dựa trên nội dung mục 5.2 của đồ án, tác giả định hướng phát triển ứng dụng trên các nền tảng di động nhằm tiếp cận tối đa thói quen người dùng smartphone.
- Nghiên cứu giải pháp nâng cấp hệ thống máy chủ streaming, tối ưu hóa các thuật toán nén video để nâng giới hạn dung lượng tải lên.
- Phát triển thêm các thuật toán gợi ý nội dung thông minh và bổ sung các tùy chọn bảo mật nâng cao trong giao tiếp nhóm.
Giá trị tham khảo
Đồ án là tài liệu kỹ thuật có giá trị tham khảo thiết thực cho:
- Sinh viên chuyên ngành Công nghệ thông tin thực hiện khóa luận tốt nghiệp về phát triển ứng dụng web hoặc hệ thống mạng xã hội.
- Các lập trình viên nghiên cứu hệ sinh thái Django, cụ thể là phương pháp tích hợp Django-Channels và Redis để xử lý truyền thông thời gian thực qua WebSocket.
- Phần đáng tham khảo nhất trong đồ án là mô hình thiết kế cơ sở dữ liệu chi tiết gồm 26 bảng tại Chương 3 và cách tổ chức cấu trúc thư mục module hóa dự án Django (
blog, chat, friend, notification, users).
Câu hỏi thường gặp
1. Hệ thống ShortVibe áp dụng những ràng buộc nào khi người dùng đăng tải video mới?
Khi tạo bài đăng mới, hệ thống yêu cầu người dùng phải đăng nhập tài khoản trước. Bài đăng bao gồm hai thuộc tính bắt buộc là tiêu đề và tệp video. Tệp video được ràng buộc nghiêm ngặt với kích thước phải dưới 10MB và phải đúng định dạng video hợp lệ.
2. Cơ chế chặn người dùng trong danh sách hạn chế hoạt động như thế nào?
Theo quy định nghiệp vụ của đồ án, chức năng thêm người dùng hạn chế (lưu trong bảng user_blacklist) giúp ngăn chặn hoàn toàn việc người bị hạn chế xem bài đăng, xem trang cá nhân hoặc nhắn tin với người chặn. Hệ thống thiết lập cơ chế ẩn triệt để khiến cả hai phía không thể tìm thấy bất kỳ dấu vết nào về nhau trên nền tảng.
3. Kiến trúc thời gian thực của ShortVibe được thiết kế bằng những công nghệ nào?
Chức năng nhắn tin thời gian thực được xây dựng dựa trên sự kết hợp giữa extension Django-Channels (xử lý kết nối WebSocket và streaming HTTP) và Redis (đóng vai trò cơ sở dữ liệu NoSQL, bộ nhớ đệm và message broker). Các tin nhắn gửi qua Redis được định tuyến đến channel tương ứng để các tiến trình worker xử lý bất đồng bộ.
4. Điều kiện bắt buộc để hai người dùng có thể mở phòng hội thoại riêng tư là gì?
Hệ thống ràng buộc cuộc hội thoại riêng tư chỉ diễn ra khi hai người dùng đã thiết lập quan hệ bạn bè hợp lệ. Phòng hội thoại riêng tư (chat_room) sẽ được hệ thống tạo tự động ngay khi hai người dùng hoàn tất việc gửi và xác nhận lời mời kết bạn.
5. Cấu trúc cơ sở dữ liệu của ShortVibe gồm bao nhiêu bảng và phân chia theo các app nào?
Cơ sở dữ liệu của đồ án gồm 26 bảng chuẩn hóa trong MySQL, phân chia theo các app: nhóm quản trị và xác thực Django (auth_user, auth_group,...), nhóm bài đăng (blog_post, blog_comment, blog_post_likes, blog_post_save,...), nhóm hội thoại (chat_room, chat_chat, chat_roomgroup,...), nhóm bạn bè (friend_friendrequest, friend_friendlist,...), nhóm người dùng (users_profile, user_blacklist, user_profile_following) và nhóm thông báo (notification_notification).
Kết luận
Đồ án tốt nghiệp "Phát triển ứng dụng chia sẻ video ngắn - ShortVibe" của sinh viên Lê Nguyễn Đăng Khoa đã giải quyết thành công bài toán xây dựng nền tảng mạng xã hội video ngắn trên nền tảng web bằng ngôn ngữ Python và framework Django. Công trình hoàn thành trọn vẹn từ khâu phân tích bài toán, thiết kế cơ sở dữ liệu 26 bảng đến hiện thực hóa 21 nhóm giao diện và tích hợp xử lý thời gian thực qua WebSocket và Redis. Đây là một báo cáo kỹ thuật hoàn chỉnh, đáp ứng đầy đủ yêu cầu đào tạo kỹ sư Công nghệ thông tin tại Trường Đại học Bà Rịa – Vũng Tàu.