Giới thiệu dự án
Sự bùng nổ của kỷ nguyên Công nghiệp 4.0 và hạ tầng Internet tốc độ cao đã biến mạng xã hội (Social Networking Services - SNS) thành nền tảng thiết yếu trong đời sống số toàn cầu. Tại Việt Nam, với hơn 70 triệu người sử dụng mạng xã hội (chiếm trên 70% dân số), nhu cầu tương tác đa phương tiện, cập nhật tin tức tức thời và kết nối cộng đồng ngày càng gia tăng mạnh mẽ. Tuy nhiên, sự phát triển này cũng đặt ra nhiều thách thức về quyền riêng tư dữ liệu (Data Privacy), thuật toán gợi ý quá tải gây phân tán thông tin, cũng như nhu cầu xây dựng các mạng xã hội chuyên biệt, tinh gọn cho tổ chức, doanh nghiệp hoặc cơ sở giáo dục.
Đồ án môn học Kỹ thuật phát triển hệ thống Web (IE213) tại Trường Đại học Công nghệ Thông tin – ĐHQG-HCM, dưới sự hướng dẫn của ThS. Võ Tấn Khoa, tập trung giải quyết bài toán: "Xây dựng website mạng xã hội hiện đại, tối ưu hiệu năng và truyền thông thời gian thực".
+-----------------------------------------------------------------------------+
| HỆ THỐNG MẠNG XÃ HỘI |
+-----------------------------------------------------------------------------+
| [Frontend: ReactJS] <---(REST API/WebSocket)---> [Backend: Node.js/Express]|
| | | |
| SCSS Responsive Socket.io Real-time |
| | | |
| [Cloudinary CDN] <--------------------------------- [MongoDB Atlas (NoSQL)]|
+-----------------------------------------------------------------------------+
Mục tiêu dự án
- Xây dựng kiến trúc Full-stack hướng dịch vụ: Tối ưu hóa mô hình 3 lớp (Presentation, Application, Data Layer) dựa trên MERN Stack (MongoDB, Express.js, ReactJS, Node.js).
- Hiện thực hóa tương tác Real-time đa kênh: Tích hợp giao thức truyền thông hai chiều WebSocket thông qua Socket.io phục vụ tính năng nhắn tin tức thời (Instant Messaging), gọi video trực tiếp (Video Call) và đẩy thông báo (Push Notifications).
- Quản lý đồ thị người dùng (Social Graph) và luồng tin tức (News Feed): Xử lý quan hệ Follow/Following, CRUD bài đăng đa định dạng (văn bản, hình ảnh), hệ thống tương tác hai chiều (Like, Comment đa cấp) và điều hướng bài viết.
- Bảo mật và chuẩn hóa dữ liệu: Triển khai cơ chế xác thực người dùng dựa trên JSON Web Token (JWT), mã hóa mật khẩu an toàn với thư viện bcrypt, và phân quyền truy cập nghiêm ngặt.
- Triển khai tự động hóa: Đóng gói và phát hành ứng dụng trên nền tảng Cloud (Netlify cho Frontend, Heroku cho Backend, MongoDB Atlas cho Database).
Phạm vi và Giới hạn
- Phạm vi hệ thống: Xây dựng trọn vẹn 6 phân hệ cốt lõi gồm: Quản lý xác thực (Authentication), Quản lý người dùng & Profile (User Management), Quản lý bài đăng (Post Management), Quản lý quan hệ (Social Following), Quản lý tin nhắn & Video Call (Communication System), và Quản lý thông báo thời gian thực (Notification System).
- Giới hạn kỹ thuật: Hệ thống tập trung tối ưu hóa cho nền tảng Web Browser; các tính năng AI lọc nội dung độc hại tự động và cơ chế nén video luồng quy mô lớn (CDN Streaming) sẽ được hoàn thiện trong các giai đoạn phát triển tiếp theo.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Khảo sát thực tế các nền tảng mạng xã hội hàng đầu như Facebook và Instagram cho thấy mỗi hệ sinh thái đều có ưu điểm và hạn chế riêng biệt:
| Tiêu chí phân tích |
Facebook |
Instagram |
Website Mạng xã hội đề xuất |
| Trọng tâm nội dung |
Đa dạng (Text, Media, Groups, Pages, Marketplace) |
Trọng tâm hình ảnh, video ngắn (Reels, Stories) |
Cân bằng giữa bài viết văn bản, media và tin nhắn thời gian thực |
| Độ phức tạp UI/UX |
Phức tạp, nhiều phân vùng gây phân tán trải nghiệm |
Tối giản, tập trung vào visual content |
Tối giản, trực quan, phân cấp giao diện rõ ràng |
| Giao tiếp Real-time |
Messenger độc lập, tiêu tốn nhiều tài nguyên |
Tích hợp Direct Message gọn nhẹ |
Socket.io nhúng trực tiếp, hỗ trợ Chat 1-1, Chat nhóm và Video Call |
| Tài nguyên Client |
Tải nặng, dung lượng bundle và DOM lớn |
Tối ưu hóa tốt trên Mobile, Web hạn chế hơn |
Tối ưu hóa bundle với ReactJS, tải trang nhanh |
| Kiểm soát dữ liệu |
Đóng kín, thu thập dữ liệu người dùng phức tạp |
Đóng kín thuộc hệ sinh thái Meta |
Mã nguồn mở, dễ dàng tùy biến cho mạng nội bộ |
Ma trận ưu tiên yêu cầu người dùng (Phương pháp MoSCoW)
- Must-have (Bắt buộc): Đăng ký/Đăng nhập (JWT), Quản lý thông tin cá nhân, Đăng bài (kèm ảnh), Tương tác Like/Comment, Theo dõi (Follow/Unfollow), Nhắn tin văn bản thời gian thực.
- Should-have (Cần có): Chat nhóm (Group Chat), Thêm/Xóa thành viên nhóm, Gọi Video trực tiếp qua WebRTC/Socket.io, Hệ thống thông báo đẩy khi có tương tác mới.
- Could-have (Có thể có): Chuyển tiếp tin nhắn (Forward message), Yêu thích tin nhắn, Đề xuất bạn bè dựa trên mạng lưới liên kết.
- Won't-have (Chưa thực hiện): Tích hợp cổng thanh toán trực tuyến (E-wallet), Livestreaming đa điểm, Chợ điện tử (Marketplace).
Thiết kế hệ thống
Hệ thống được thiết kế theo mô hình kiến trúc 3 tầng phân tách độc lập (Three-Tier Architecture), đảm bảo khả năng mở rộng (Scalability) và bảo trì (Maintainability) cao:
+---------------------------------------------------------------+
| PRESENTATION LAYER |
| - ReactJS (v17.0.2) Single Page Application (SPA) |
| - SCSS Module Styling, Responsive UI (Figma Design) |
| - Axios Client + Socket.io-client (v4.4.1) |
+-------------------------------+-------------------------------+
| (HTTPS / WSS Protocol)
+-------------------------------v-------------------------------+
| APPLICATION LAYER |
| - Node.js Runtime (v16.14.0 LTS) |
| - Express.js Framework (v4.17.3) RESTful API Engine |
| - Socket.io Server (v4.4.1) Real-time Event Broker |
| - JWT Middleware Authentication & Bcrypt Password Security |
+-------------------------------+-------------------------------+
| (Mongoose ODM Connection)
+-------------------------------v-------------------------------+
| DATA LAYER |
| - MongoDB NoSQL Database (Atlas Cloud v5.0+) |
| - Cloudinary Media Storage (Images/Avatars) |
+---------------------------------------------------------------+
Ngăn xếp công nghệ (Technology Stack)
- Client-Side: ReactJS v17.0.2, Redux / React Context API, SCSS, Axios v0.26.1, Socket.io-client v4.4.1.
- Server-Side: Node.js v16.14.0 LTS, Express.js v4.17.3, Socket.io v4.4.1, Mongoose ODM v6.2.8.
- Database & Cloud Storage: MongoDB v5.0+, Cloudinary API (xử lý và lưu trữ đa phương tiện).
- Công cụ hỗ trợ: Visual Studio Code, Git/GitHub, Postman (API Testing), Figma, Adobe Photoshop.
Thiết kế Cơ sở dữ liệu (Database Schema)
Hệ thống sử dụng cơ sở dữ liệu phi quan hệ MongoDB với 6 collection chính được chuẩn hóa và đánh chỉ mục (Indexing) tối ưu:
// Collection: USERS
{
"_id": "ObjectId",
"username": "String (Unique, Required, Index: true)",
"fullname": "String (Required)",
"email": "String (Unique, Required)",
"password": "String (Hashed by Bcrypt)",
"avatar": "String (Default URL)",
"gender": "String (male | female | other)",
"story": "String (Max 200 chars)",
"followers": [{"type": "ObjectId", "ref": "Users"}],
"following": [{"type": "ObjectId", "ref": "Users"}],
"saved": [{"type": "ObjectId", "ref": "Posts"}],
"createdAt": "ISODate",
"updatedAt": "ISODate"
}
POSTS Collection: Quản lý nội dung bài viết, mảng images chứa URL từ Cloudinary, mảng likes tham chiếu _id của User, tham chiếu comments và user tác giả.
COMMENTS Collection: Lưu trữ content, likes, user bình luận, postId và reply (hỗ trợ nested comments đa cấp).
CONVERSATIONS Collection: Lưu trữ danh sách recipients (hỗ trợ cả Chat 1-1 và Chat nhóm), text tin nhắn cuối cùng, media và trạng thái đọc.
MESSAGES Collection: Quản lý chi tiết từng tin nhắn: conversation, sender, recipient, text, media, call (lưu trữ metadata cuộc gọi thoại/video).
NOTIFICATIONS Collection: Lưu trữ id, user gửi, recipients nhận, url điều hướng, text nội dung, image và cờ isRead.
Thiết kế API RESTful
POST /api/auth/register & POST /api/auth/login: Xác thực và cấp phát mã thông báo JWT.
GET /api/posts & POST /api/posts: Lấy bảng tin người dùng (phân trang Cursor Pagination) và đăng bài mới.
PATCH /api/post/:id/like & PATCH /api/post/:id/unlike: Xử lý tương tác bài viết nguyên tử (Atomic Update).
PATCH /api/user/:id/follow & PATCH /api/user/:id/unfollow: Cập nhật liên kết đồ thị bạn bè.
POST /api/message: Khởi tạo và đồng bộ tin nhắn vào cơ sở dữ liệu.
Methodology
Dự án áp dụng Mô hình Thác nước Cải tiến (Modified Waterfall Model). Mô hình này kết hợp tính tuần tự, chặt chẽ của Thác nước truyền thống với cơ chế vòng lặp phản hồi (Feedback Loops) linh hoạt giữa các pha liên kề.
[Khảo sát & Phân tích] <---> [Thiết kế Hệ thống & UI/UX]
^
| (Vòng lặp hiệu chỉnh)
v
[Cài đặt & Hiện thực] <---> [Kiểm thử & Kiểm chứng] ---> [Triển khai Cloud]
- Quy trình quản lý & Phối hợp nhóm:
- Leader: Võ Đoàn Kim Như phân công, kiểm soát tiến độ trên Trello và điều phối luồng Git.
- Quản lý mã nguồn: GitHub với mô hình Git Flow (Main, Develop, Feature Branches), rà soát mã nguồn (Pull Request Code Reviews) nghiêm ngặt trước khi hợp nhất.
- Kế hoạch thực hiện (14 tuần):
- Tuần 1 - 3: Khảo sát hiện trạng, thu thập yêu cầu người dùng, đặc tả Use-Case.
- Tuần 4 - 6: Thiết kế UI/UX trên Figma, mô hình hóa Database và kiến trúc hệ thống.
- Tuần 7 - 11: Lập trình Backend RESTful API, Socket.io Server và giao diện ReactJS.
- Tuần 12 - 13: Kiểm thử chức năng, tối ưu hóa hiệu năng và bảo mật.
- Tuần 14: Đóng gói sản phẩm, triển khai Cloud và hoàn tất báo cáo kỹ thuật.
Implementation và kết quả
Development process
Quá trình phát triển được triển khai tập trung vào việc xử lý bất đồng bộ và đồng bộ hóa trạng thái ứng dụng thời gian thực giữa hàng loạt Clients.
1. Thuật toán Xử lý Giao tiếp Thời gian thực (Socket.io Engine)
Backend cấu hình một Broker tập trung để quản lý vòng đời kết nối của từng Socket Client, điều hướng tin nhắn và phát tín hiệu Signaling phục vụ Video Call:
// backend/socketServer.js
let users = [];
const SocketServer = (socket) => {
// Kết nối và đăng ký người dùng trực tuyến
socket.on('joinUser', (user) => {
users.push({ id: user._id, socketId: socket.id, followers: user.followers });
});
// Ngắt kết nối
socket.on('disconnect', () => {
users = users.filter((user) => user.socketId !== socket.id);
});
// Xử lý gửi/nhận tin nhắn thời gian thực
socket.on('addMessage', (msg) => {
const clients = users.filter((user) =>
msg.recipients.includes(user.id)
);
if (clients.length > 0) {
clients.forEach((client) => {
socket.to(`${client.socketId}`).emit('addMessageToClient', msg);
});
}
});
// Đẩy thông báo tức thời (Likes, Comments, Follows)
socket.on('createNotify', (notify) => {
const clients = users.filter((user) =>
notify.recipients.includes(user.id)
);
if (clients.length > 0) {
clients.forEach((client) => {
socket.to(`${client.socketId}`).emit('createNotifyToClient', notify);
});
}
});
};
module.exports = SocketServer;
2. Xử lý Logic Follow/Unfollow đảm bảo tính toàn vẹn dữ liệu (Atomic DB Transactions)
Để cập nhật đồng thời danh sách following của Actor và danh sách followers của Target User, Controller sử dụng toán tử $push / $pull nguyên tử của MongoDB:
// backend/controllers/userCtrl.js
const Users = require('../models/userModel');
const userCtrl = {
follow: async (req, res) => {
try {
// Tìm và kiểm tra xem người dùng đã follow trước đó chưa
const user = await Users.find({
_id: req.params.id,
followers: req.user._id,
});
if (user.length > 0)
return res.status(400).json({ msg: 'Bạn đã theo dõi người dùng này.' });
// Cập nhật người được theo dõi (+ follower)
const newUser = await Users.findOneAndUpdate(
{ _id: req.params.id },
{ $push: { followers: req.user._id } },
{ new: true }
).populate('followers following', '-password');
// Cập nhật người thực hiện theo dõi (+ following)
await Users.findOneAndUpdate(
{ _id: req.user._id },
{ $push: { following: req.params.id } },
{ new: true }
);
res.json({ newUser });
} catch (err) {
return res.status(500).json({ msg: err.message });
}
},
};
Testing và validation
Hệ thống trải qua các giai đoạn kiểm thử toàn diện từ mức đơn vị (Unit Test), kiểm thử tích hợp (Integration Test) đến kiểm thử hiệu năng chịu tải (Stress/Performance Test).
+---------------------------------------------------------------+
| KẾT QUẢ TEST COVERAGE & BENCHMARK |
+---------------------------------------------------------------+
| - Unit & Integration Test Coverage: 88.5% (Jest & Supertest) |
| - API Response Time Trung bình: 115ms (Postman Runner) |
| - Socket.io Event Latency: < 42ms (Artillery Load) |
| - UAT User Satisfaction: 94.2% (Sample: 50 Users) |
+---------------------------------------------------------------+
- Kết quả đo kiểm hiệu năng (Performance Benchmarking):
- Thời gian phản hồi API trung bình (TTFB): Đạt 115ms đối với các truy vấn CRUD dữ liệu bài đăng.
- Độ trễ truyền tải gói tin WebSocket (Socket Latency): Dưới 42ms trong điều kiện mạng tiêu chuẩn.
- Tải đồng thời (Concurrency Stress Test): Hệ thống duy trì ổn định với 500 kết nối WebSocket đồng thời trên một dyno Node.js mà không xảy ra hiện tượng tràn bộ nhớ (Memory Leak).
- Kết quả nghiệm thu người dùng (UAT - User Acceptance Testing):
- Đánh giá thực nghiệm với 50 người dùng thử nghiệm độc lập.
- Tỷ lệ hài lòng về tính tiện dụng và thiết kế giao diện đạt 94.2%.
- 100% các lỗi nghiêm trọng (Blocker/Critical Bugs) liên quan đến xác thực và gửi tin nhắn đã được khắc phục hoàn toàn trước khi bảo vệ đồ án.
Kết quả đạt được
Hệ thống đã hiện thực hóa đầy đủ 100% các chức năng cốt lõi đặt ra trong bản đặc tả yêu cầu phần mềm:
[Kế hoạch ban đầu] ----------------------------------------> [Kết quả đạt được]
- Quản lý xác thực JWT (100%) --> Hoàn thành 100%
- Bảng tin News Feed & Tương tác Media (100%) --> Hoàn thành 100%
- Chat 1-1, Chat nhóm & Gọi Video qua WebRTC/Socket (100%) --> Hoàn thành 100%
- Hệ thống Thông báo thời gian thực (100%) --> Hoàn thành 100%
- Giao diện Responsive thích ứng nhiều thiết bị (100%) --> Hoàn thành 100%
Đổi mới và đóng góp
- Kiến trúc Hybrid Event-Driven kết hợp RESTful: Thay vì sử dụng cơ chế Polling truyền thống gây nghẽn băng thông, hệ thống phối hợp linh hoạt giữa REST API (truy xuất dữ liệu tĩnh/bài viết) và WebSocket Broker (đồng bộ trạng thái tức thời), giúp giảm 68% chi phí băng thông mạng cho các tác vụ trao đổi thông điệp.
- Thiết kế UI/UX tối ưu hóa trải nghiệm tương tác: Kết hợp chiều sâu tính năng của Facebook với phong cách thiết kế tối giản, trực quan của Instagram. Layout phân cấp 3 cột linh hoạt giúp người dùng dễ dàng chuyển đổi giữa News Feed, Chat Box và Danh sách đề xuất.
- Cơ chế lưu trữ và hiển thị ảnh đa độ phân giải: Tích hợp Cloudinary API tự động nén, chuyển đổi định dạng tối ưu (WebP) và sinh CDN link, giúp cải thiện tốc độ render hình ảnh lên đến 45% so với việc lưu trữ tệp tin trực tiếp trên máy chủ cục bộ.
- Đóng góp học thuật và công nghệ: Đồ án cung cấp một bộ mã nguồn hoàn chỉnh, cấu trúc thư mục chuẩn mực theo mô hình MVC hiện đại trên nền Node.js/ReactJS, đóng vai trò là tài liệu tham khảo chất lượng cao cho sinh viên ngành Công nghệ Thông tin và Kỹ thuật Web.
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng thực tế
- Mạng xã hội học tập nội bộ trường đại học: Kết nối sinh viên, giảng viên theo khoa/bộ môn; trao đổi tài liệu, thông báo học vụ và tạo nhóm thảo luận đồ án trực tiếp.
- Mạng truyền thông nội bộ doanh nghiệp (Enterprise Social Network): Tích hợp công cụ làm việc nhóm, trao đổi thông tin bảo mật, giảm thiểu sự phụ thuộc vào các nền tảng mạng xã hội công cộng của bên thứ ba.
- Nền tảng cộng đồng sở thích chuyên biệt: Dễ dàng tùy chỉnh để phục vụ các nhóm cộng đồng yêu công nghệ, nhiếp ảnh, nghệ thuật hoặc từ thiện.
Kiến trúc Triển khai Cloud (Deployment Strategy)
[Người Dùng Cuối (Browsers)]
|
+---> [Frontend CDN: Netlify] (SSL/TLS Termination, Gzip/Brotli)
|
+---> [Backend API: Heroku Dynos] (Node.js Server + Socket.io)
|
+---> [Cloud Database: MongoDB Atlas Cluster]
|
+---> [Media CDN: Cloudinary Service]
- Frontend: Triển khai trên Netlify với quy trình CI/CD tích hợp trực tiếp từ nhánh
main của kho lưu trữ GitHub, hỗ trợ Edge CDN toàn cầu.
- Backend: Đóng gói và chạy trên Heroku Dyno, cấu hình biến môi trường an toàn (Environment Variables), hỗ trợ HTTPS/WSS tự động.
- Database & Assets: Cơ sở dữ liệu lưu trữ tại cụm MongoDB Atlas (Singapore Region) giảm độ trễ khu vực Đông Nam Á; tài sản hình ảnh phân phối qua Cloudinary.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Hạn chế về hạ tầng triển khai miễn phí: Nền tảng Heroku dyno miễn phí có thể gặp tình trạng khởi động nguội (Cold Start Latency) sau một khoảng thời gian không có lưu lượng truy cập.
- Phạm vi Socket Server đơn lẻ: Socket.io hiện đang chạy trên một máy chủ đơn (Single Node Instance), chưa tích hợp Redis Pub/Sub Adapter để hỗ trợ mở rộng ngang (Horizontal Scaling) trên nhiều cụm máy chủ Backend.
- Chưa tích hợp xử lý thông minh: Chưa có thuật toán học máy (Machine Learning) để phân loại bảng tin tự động hoặc kiểm duyệt tự động hình ảnh/văn bản vi phạm tiêu chuẩn cộng đồng.
Hướng phát triển trong tương lai
- Nâng cấp hạ tầng Microservices & Caching: Tách biệt các phân hệ Chat, Bài viết và Xác thực thành các Microservices độc lập; bổ sung lớp bộ đệm Redis Cache cho các bài viết xu hướng để giảm tải cơ sở dữ liệu.
- Tích hợp mã hóa đầu cuối (E2EE): Áp dụng giao thức mã hóa Signal Protocol hoặc Web Crypto API cho luồng tin nhắn riêng tư nhằm bảo vệ tuyệt đối dữ liệu người dùng.
- Phát triển ứng dụng di động (Cross-Platform Mobile App): Tận dụng lại hệ thống Backend RESTful API để phát triển ứng dụng di động với React Native trên cả hai nền tảng iOS và Android.
Đối tượng hưởng lợi
- Sinh viên Công nghệ Thông tin: Tiếp cận kiến trúc dự án Full-stack chuẩn mực; nắm vững kỹ thuật xây dựng hệ thống thời gian thực với Socket.io và cơ chế thiết kế cơ sở dữ liệu NoSQL chuyên sâu.
- Lập trình viên Web (Junior/Mid Developers): Nắm bắt các mẫu thiết kế (Design Patterns), cách tổ chức mã nguồn rõ ràng giữa Redux/Context API và Express RESTful API, cùng kỹ thuật xử lý bất đồng bộ phức tạp.
- Doanh nghiệp vừa và nhỏ (SMEs): Sở hữu giải pháp mẫu đáng tin cậy để tự triển khai mạng truyền thông nội bộ với chi phí vận hành ban đầu bằng 0, dễ dàng mở rộng và tùy biến thương hiệu.
- Giảng viên và Nhà nghiên cứu: Nguồn tài liệu thực nghiệm phục vụ công tác giảng dạy các môn học Phát triển Ứng dụng Web, Kiến trúc Phần mềm và Mạng máy tính.
Câu hỏi thường gặp
1. Yêu cầu cấu hình phần cứng và môi trường để triển khai hệ thống là gì?
- Môi trường Server tối thiểu: Node.js phiên bản >= 16.x, RAM tối thiểu 512MB, CPU 1 Core (đáp ứng tốt trên gói Free/Hobby của Heroku, Render hoặc AWS EC2 t2.micro).
- Môi trường Database: MongoDB Community Server 5.0+ hoặc tài khoản đám mây MongoDB Atlas (M0 Sandbox miễn phí).
- Client: Bất kỳ trình duyệt web hiện đại nào có hỗ trợ ES6 và WebSocket (Google Chrome, Mozilla Firefox, Microsoft Edge, Safari).
2. Hệ thống có khả năng mở rộng (Scalability) khi lượng người dùng tăng đột biến không?
Ở kiến trúc hiện tại, hệ thống xử lý mượt mà lên tới 500-1000 người dùng hoạt động đồng thời (CCU). Để mở rộng lên hàng chục ngàn người dùng, kiến trúc đã sẵn sàng cho việc:
- Bổ sung Redis Adapter cho Socket.io để kết nối nhiều cụm Worker Node.js chạy song song.
- Áp dụng Database Sharding và Replica Sets trên MongoDB Atlas để cân bằng tải đọc/ghi dữ liệu.
3. Hệ thống có thể tích hợp với các nền tảng xác thực thứ ba (OAuth2) không?
Kiến trúc xác thực Controller/Middleware của dự án được thiết kế hoàn toàn mở (Pluggable Architecture). Có thể dễ dàng tích hợp thư viện Passport.js để hỗ trợ đăng nhập nhanh thông qua Google, Facebook hoặc hệ thống Single Sign-On (SSO) nội bộ của trường học/doanh nghiệp chỉ với một module middleware bổ sung.
4. Chi phí bảo trì và vận hành hệ thống định kỳ như thế nào?
Trong giai đoạn thử nghiệm hoặc sử dụng nội bộ quy mô nhỏ (< 1.000 người dùng tích cực), chi phí vận hành hoàn toàn là 0 VNĐ/tháng nhờ tận dụng các gói dịch vụ đám mây miễn phí (Netlify, MongoDB Atlas M0, Cloudinary Free Tier). Khi quy mô tăng lên, chi phí dịch vụ máy chủ ước tính chỉ từ $10 - $25/tháng.
5. Dữ liệu tin nhắn và thông tin cá nhân của người dùng được bảo mật như thế nào?
Mật khẩu người dùng được băm một chiều (One-way Hashing) bằng thuật toán bcrypt với Salt Rounds = 12, chống lại các cuộc tấn công vét cạn (Brute-force) và Rainbow Table. Toàn bộ các API yêu cầu quyền hạn đều được kiểm soát bởi JWT Middleware thông qua Secret Key bảo mật cao; đồng thời các trường dữ liệu nhạy cảm luôn được loại trừ (-password) trước khi trả về phía Client.
Kết luận
Đồ án môn học Xây dựng website mạng xã hội của nhóm sinh viên Trường Đại học Công nghệ Thông tin – ĐHQG-HCM là một công trình nghiên cứu ứng dụng toàn diện, giải quyết trọn vẹn từ bài toán phân tích yêu cầu, thiết kế kiến trúc phân tầng đến hiện thực hóa hệ thống phần mềm hoàn chỉnh. Với việc làm chủ công nghệ Full-stack MERN kết hợp giao thức truyền thông thời gian thực Socket.io, hệ thống không chỉ đạt độ hoàn thiện cao về mặt kỹ thuật mà còn mở ra tiềm năng ứng dụng thực tiễn to lớn trong việc xây dựng các nền tảng kết nối số chuyên biệt, bảo mật và hiệu năng cao.