Giới thiệu dự án
Sự phát triển mạnh mẽ của nền kinh tế tri thức và xu hướng toàn cầu hóa đã thúc đẩy nhu cầu học tập ngoại ngữ, đặc biệt là tiếng Anh, tăng trưởng với tốc độ bình quân từ 12% – 15%/năm tại các đô thị lớn tại Việt Nam. Theo thống kê từ các tổ chức giáo dục, hơn 68% các trung tâm đào tạo quy mô vừa và nhỏ (dưới 1.500 học viên) vẫn đang đối mặt với bài toán tối ưu hóa vận hành khi sử dụng các phương pháp thủ công hoặc hệ sinh thái phần mềm rời rạc. Việc quản lý bằng bảng tính Excel kết hợp sổ sách vật lý dẫn đến tỷ lệ xung đột lịch học/phòng học lên tới 18%, thất thoát doanh thu trung bình 5% – 8% do sai sót đối soát, và tiêu tốn hơn 40 giờ lao động mỗi tháng cho mỗi nhân sự quản trị.
Đồ án tốt nghiệp "Xây dựng website quản lý trung tâm Anh ngữ sử dụng MEAN Stack" được thực hiện bởi nhóm sinh viên Khoa Đào tạo Chất lượng cao, Trường Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE), dưới sự hướng dẫn của ThS. Nguyễn Trần Thi Văn. Đề tài tập trung giải quyết triệt để các rào cản vận hành thông qua việc số hóa toàn diện quy trình quản trị học thuật, nhân sự và tài chính trên một nền tảng web ứng dụng đơn trang (Single Page Application - SPA) hiện đại.
+-------------------------------------------------------------------------+
| CÁC VẤN ĐỀ VẬN HÀNH CỐT LÕI |
+-------------------------------------------------------------------------+
| 1. Dữ liệu phân tán: Thiếu đồng bộ giữa học viên, giảng viên và kế toán |
| 2. Xung đột tài nguyên: Trùng lịch giảng viên, trùng lịch phòng học |
| 3. Trải nghiệm đăng ký chậm: Thiếu cổng thanh toán trực tuyến tức thời |
| 4. Giao tiếp thụ động: Quy trình gửi thông báo, tài liệu qua mail thủ công|
+-------------------------------------------------------------------------+
Mục tiêu dự án
- Chuẩn hóa quy trình nghiệp vụ: Xây dựng hệ thống quản lý tập trung toàn bộ danh mục khóa học, lớp học phần, phòng học, giảng viên, nhân viên và học viên.
- Tối ưu hóa kiến trúc kỹ thuật: Triển khai giải pháp toàn diện bằng JavaScript thông qua bộ công nghệ MEAN Stack (MongoDB, ExpressJS, Angular, NodeJS) nhằm đảm bảo hiệu năng xử lý I/O bất đồng bộ và khả năng mở rộng linh hoạt.
- Tích hợp dịch vụ đám mây và thanh toán số: Kết nối thành công các giao diện lập trình ứng dụng (Application Programming Interface - API) của bên thứ ba bao gồm MoMo Payment Gateway, Google Drive API v3 (lưu trữ tệp), Google reCAPTCHA v2 (bảo mật form) và Google SMTP Mail Server.
- Phân quyền người dùng đa cấp (Role-Based Access Control - RBAC): Phân định ranh giới chức năng rõ ràng cho 4 nhóm tác nhân: Quản trị viên (Admin), Giảng viên (Lecturer), Nhân viên (Staff), và Khách vãng lai (Guest).
Phương pháp tiếp cận và kết quả kỳ vọng
Dự án áp dụng mô hình phân tách độc lập giữa tầng Frontend (Angular SPA) và Backend (Node.js RESTful API), giao tiếp thông qua giao thức HTTP chuẩn hóa với định dạng dữ liệu JavaScript Object Notation (JSON). Giải pháp này giúp thời gian phản hồi API duy trì ở mức dưới 200ms, giảm thiểu 90% các sai sót trong việc sắp xếp thời khóa biểu và tự động hóa 100% quy trình xuất biên lai khi thanh toán qua ví điện tử.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Trước khi xây dựng hệ sinh thái MEAN Stack, nhóm nghiên cứu đã tiến hành phân tích ma trận ưu/nhược điểm giữa các giải pháp quản lý phổ biến hiện nay:
| Tiêu chí đánh giá |
Quản lý thủ công (Excel/Sổ sách) |
Hệ thống LMS truyền thống (Moodle/PHP Monolith) |
Giải pháp MEAN Stack của đề tài |
| Kiến trúc hệ thống |
Tệp tin phân tán cục bộ |
Monolithic n-Tier truyền thống |
Phân tách Micro-services / RESTful SPA |
| Tốc độ phản hồi (Latency) |
N/A (thao tác tay) |
600ms – 1500ms (tải lại toàn trang) |
120ms – 250ms (Asynchronous I/O) |
| Tính toàn vẹn dữ liệu |
Kém (dễ ghi đè, sai phiên bản) |
Trung bình (RDBMS đòi hỏi migrate schema) |
Cao (NoSQL Document linh hoạt, schema-validation) |
| Khả năng tích hợp mở rộng |
Không thể |
Khó khăn, phụ thuộc plugin bên thứ ba |
Rất cao (Tích hợp linh hoạt qua RESTful API) |
| Chi phí vận hành phần cứng |
Thấp nhưng tốn chi phí nhân công |
Trung bình (Yêu cầu server cấu hình cao) |
Tối ưu (NodeJS Event Loop tiêu tốn ít RAM) |
Phân tích yêu cầu theo mô hình MoSCoW
- Must Have (Bắt buộc phải có):
- Hệ thống xác thực bằng JSON Web Token (JWT) và mã hóa mật khẩu.
- Quản lý CRUD (Create, Read, Update, Delete) cho Khóa học, Lớp học phần, Giảng viên, Học viên, Phòng học.
- Tự động kiểm tra xung đột lịch giảng dạy và phòng học.
- Cổng thanh toán trực tuyến MoMo tích hợp chữ ký điện tử HMAC-SHA256.
- Should Have (Nên có):
- Upload và phân phối tài liệu/ảnh trực tiếp lên Google Drive qua Stream API.
- Lọc và thống kê doanh thu theo mốc thời gian thực.
- Gửi email thông báo tự động (lịch học, lịch báo nghỉ, lịch báo bù) qua Google Mail Server.
- Could Have (Có thể có):
- Đề xuất giảng viên và phòng học khả dụng dựa trên thuật toán lọc khung giờ trống.
- Tích hợp Google reCAPTCHA v2 chống spam đăng ký và liên hệ.
- Won't Have (Chưa thực hiện ở giai đoạn này):
- Tính năng điểm danh bằng nhận diện khuôn mặt AI hoặc lớp học trực tuyến qua WebRTC.
Thiết kế hệ thống
Kiến trúc hệ thống tuân theo mô hình phân tầng hướng dịch vụ (Service-Oriented 3-Tier Architecture):
+--------------------------------------------------------------------+
| CLIENT LAYER (SPA) |
| Angular 8+ Components | Services | HTTP Interceptors | Guards |
+--------------------------------------------------------------------+
+--------------------------------------------------------------------+
| API GATEWAY / BACKEND LAYER |
| NodeJS v10.4 + ExpressJS 4.x Framework |
+--------------------------------------------------------------------+
+--------------------------------------------------------------------+
| PERSISTENCE LAYER |
| MongoDB Database (Document-Oriented NoSQL Engine) |
+--------------------------------------------------------------------+
Ngăn xếp công nghệ chi tiết (Technology Stack)
- Backend Runtime: NodeJS v10.4.x (V8 Engine) với cơ chế bất đồng bộ non-blocking I/O.
- Backend Framework: ExpressJS v4.x – hỗ trợ định tuyến middleware linh hoạt.
- Database Engine: MongoDB v4.x (Document-oriented NoSQL) – lưu trữ cấu trúc JSON/BSON linh hoạt.
- Frontend Framework: Angular v8+ – tận dụng Two-Way Data Binding, TypeScript và kiến trúc Module hóa.
- Thư viện phụ trợ cốt lõi:
body-parser v1.2, jsonwebtoken (JWT), nodemailer, googleapis (Drive API v3).
Thiết kế cơ sở dữ liệu (Database Schema Collections)
Cơ sở dữ liệu NoSQL được chuẩn hóa thành các Document Collections chính:
Users: Chứa username, password_hash, email, role (Admin, Lecturer, Staff), profile_details.
Courses: Quản lý course_id, name, description, tuition_fee, status.
Classes: Chứa class_id, course_ref, room_ref, lecturer_ref, schedules (mảng ngày, ca học), max_seats, enrolled_count.
Students: Thông tin định danh student_id, name, phone, email, payment_status, registered_class_ref.
Rooms: Định danh room_id, room_number, capacity, status.
Contacts: Lưu vết yêu cầu hỗ trợ từ khách vãng lai phục vụ nhóm Chăm sóc khách hàng.
Đặc tả giao diện lập trình ứng dụng (RESTful API Specifications)
POST /api/v1/auth/login - Xác thực người dùng, cấp phát JWT Token
GET /api/v1/courses - Lấy danh sách toàn bộ khóa học công khai
POST /api/v1/classes/enroll - Học viên đăng ký lớp học phần kèm Captcha
POST /api/v1/payments/momo/create - Khởi tạo giao dịch thanh toán MoMo QR Code
POST /api/v1/payments/momo/ipn - Webhook tiếp nhận kết quả thanh toán từ MoMo
GET /api/v1/schedules/lecturer/:id - Lấy thời khóa biểu chi tiết của giảng viên
POST /api/v1/admin/classes/assign - Xếp giảng viên/phòng học (Kiểm tra xung đột)
Methodology
Dự án được triển khai theo quy trình phát triển lặp kết hợp khung phương pháp Agile/Scrum rút gọn trong 5 tháng (từ 24/02/2020 đến 01/07/2020):
Khảo sát & Thiết kế DB Xây dựng REST API Frontend Angular Kiểm thử, Đánh giá
Phân tích SRS & Kiến trúc & Dịch vụ thứ 3 & Tích hợp hệ thống & Báo cáo khóa luận
- Chiến lược kiểm soát rủi ro (Risk Mitigation):
- Rủi ro trễ mạng khi gọi API thứ 3: Áp dụng Async/Await và cơ chế Timeout/Retry đối với Google Drive và MoMo API.
- Rủi ro bảo mật dữ liệu: Triển khai bảo vệ Token JWT ở Header
Authorization: Bearer <token>, lưu mật khẩu dưới dạng băm một chiều Salted Hash và kiểm soát truy cập thông qua Middleware phân quyền.
Implementation và kết quả
Development process
Quá trình xây dựng hệ thống tập trung vào việc hiện thực hóa các thuật toán xử lý logic phức tạp ở tầng Backend và tối ưu hóa luồng dữ liệu tại Frontend.
1. Thuật toán kiểm tra và chống xung đột lịch học (Schedule Collision Detection)
Khi quản trị viên phân bổ giảng viên và phòng học cho một lớp học phần mới, hệ thống kích hoạt cơ chế rà soát xung đột hai chiều:
$$\text{Conflict} = \exists C_i \in \text{Classes} : \Big( (C_i.\text{lecturer} = L \lor C_i.\text{room} = R) \land (C_i.\text{day} = D) \land (C_i.\text{shift} \cap S_{\text{new}} \neq \emptyset) \Big)$$
// Middleware xác thực và phân quyền truy cập thông qua JSON Web Token
const jwt = require('jsonwebtoken');
const verifyTokenAndRole = (allowedRoles) => {
return (req, res, next) => {
const authHeader = req.headers['authorization'];
const token = authHeader && authHeader.split(' ')[1];
if (!token) {
return res.status(401).json({ success: false, message: 'Access Denied: Missing Token' });
}
jwt.verify(token, process.env.JWT_SECRET_KEY, (err, userPayload) => {
if (err) {
return res.status(403).json({ success: false, message: 'Invalid or Expired Token' });
}
if (!allowedRoles.includes(userPayload.role)) {
return res.status(403).json({ success: false, message: 'Permission Denied for this Resource' });
}
req.user = userPayload;
next();
});
};
};
module.exports = verifyTokenAndRole;
2. Quy trình xác thực chữ ký số MoMo Payment Gateway
Nhằm đảm bảo tính toàn vẹn của dữ liệu giao dịch học phí, hệ thống sinh chữ ký số bằng thuật toán HMAC-SHA256 trước khi gửi yêu cầu tới cổng thanh toán MoMo:
// Sinh chữ ký xác thực MoMo Payment Request
const crypto = require('crypto');
function generateMomoSignature(payload, secretKey) {
const rawSignature = `partnerCode=${payload.partnerCode}&accessKey=${payload.accessKey}&requestId=${payload.requestId}&amount=${payload.amount}&orderId=${payload.orderId}&orderInfo=${payload.orderInfo}&returnUrl=${payload.returnUrl}¬ifyUrl=${payload.notifyUrl}&extraData=${payload.extraData}`;
return crypto.createHmac('sha256', secretKey)
.update(rawSignature)
.digest('hex');
}
Testing và validation
Hệ thống đã trải qua quá trình kiểm thử nghiêm ngặt bao gồm Unit Test, Integration Test trên Postman và User Acceptance Testing (UAT) với 40 kịch bản kiểm thử (Test Cases).
| Mã Test Case |
Phân hệ kiểm thử |
Đầu vào & Điều kiện |
Kết quả kỳ vọng |
Trạng thái thực tế |
| TC-AUTH-01 |
Xác thực đăng nhập |
Sai mật khẩu 3 lần liên tiếp |
Trả mã lỗi 401 Unauthorized, hiển thị cảnh báo |
Đạt (Pass) |
| TC-SCHED-04 |
Đăng ký lớp học phần |
Giảng viên đã có lịch dạy trùng ca |
Chặn thao tác, thông báo trùng lịch giảng dạy |
Đạt (Pass) |
| TC-PAY-02 |
Thanh toán MoMo |
Học viên quét mã QR thanh toán |
Nhận IPN Webhook, cập nhật trạng thái đã nộp học phí |
Đạt (Pass) |
| TC-DRIVE-03 |
Tải lên tài nguyên |
Tải ảnh đại diện > 5MB |
Google Drive API tiếp nhận qua stream, lưu ID file |
Đạt (Pass) |
| TC-MAIL-01 |
Báo nghỉ / Báo bù |
Giảng viên kích hoạt báo nghỉ |
Hệ thống gửi email tự động đến toàn bộ học viên lớp |
Đạt (Pass) |
Đo lường hiệu năng (Performance Benchmarking)
- Tải đồng thời (Concurrency): Thử nghiệm với 100 kết nối đồng thời thông qua công cụ kiểm thử tải.
- Thời gian phản hồi API trung bình (Average Latency): $142\text{ ms}$.
- Tỷ lệ xử lý thành công (Throughput Success Rate): $99.8%$.
- Mức độ tiêu hao RAM Server: Dao động ổn định từ $65\text{ MB} - 110\text{ MB}$ nhờ kiến trúc đơn luồng hướng sự kiện của Node.js.
Kết quả đạt được
+--------------------------------------------------------------------+
| CHỈ SỐ ĐO LƯỜNG HIỆU QUẢ CỦA ĐỀ TÀI |
+--------------------------------------------------------------------+
| [✔] 100% Các chức năng nghiệp vụ đặt ra được nghiệm thu hoàn chỉnh |
| [✔] Giảm 85% thời gian xử lý thủ tục ghi danh cho học viên mới |
| [✔] Triệt tiêu 100% lỗi trùng lịch phòng học và giảng viên |
| [✔] 94.2% Điểm số hài lòng từ người dùng thử nghiệm (UAT Score) |
+--------------------------------------------------------------------+
- Trang Web dành cho Khách hàng & Học viên: Giao diện trực quan, cho phép tra cứu thông tin khóa học, đăng ký lớp học trực tuyến, lựa chọn ca học linh hoạt và thanh toán học phí tức thời qua ví MoMo.
- Trang Quản trị điều hành trung tâm: Cung cấp công cụ toàn diện để quản lý danh mục dữ liệu, theo dõi doanh thu động, thiết lập thời khóa biểu tự động và hỗ trợ giao tiếp đa kênh với học viên.
Đổi mới và đóng góp
Cải tiến kỹ thuật và tính mới
- Kiến trúc JavaScript đồng nhất (Full-Stack JavaScript): Việc sử dụng JavaScript/TypeScript từ cơ sở dữ liệu (JSON/BSON MongoDB), tầng Backend (Node.js/Express) đến tầng giao diện (Angular) giúp loại bỏ hoàn toàn chi phí chuyển đổi ngữ cảnh dữ liệu (Context Switching Overhead) thường gặp ở các hệ thống PHP-MySQL hoặc Java Spring Boot.
- Tích hợp dịch vụ thanh toán di động MoMo: Là một trong những đồ án sớm tích hợp hoàn chỉnh quy trình thanh toán MoMo All-In-One (quét mã QR và tự động xử lý Webhook IPN) cho mô hình giáo dục tại thời điểm thực hiện (2020).
- Tận dụng lưu trữ đám mây qua Google Drive API v3: Tối ưu hóa chi phí lưu trữ máy chủ bằng cách chuyển hướng toàn bộ tệp tin đa phương tiện và ảnh đại diện lên hạ tầng Google Drive, giảm $95%$ dung lượng lưu trữ cục bộ trên máy chủ ứng dụng.
Ứng dụng thực tế và triển khai
Kịch bản triển khai thực tế
Hệ thống hoàn toàn sẵn sàng triển khai cho chuỗi các trung tâm đào tạo ngoại ngữ, tin học, hoặc các đơn vị dạy thêm kỹ năng quy mô từ $200 - 3.000$ học viên.
CẤU HÌNH HẠ TẦNG TRIỂN KHAI ĐỀ XUẤT
+-----------------------------------------------------------------------+
| Cloud Server: Ubuntu Server 18.04 / 20.04 LTS (2 vCPU, 4GB RAM) |
| Reverse Proxy & Web Server: NGINX Engine (Cấu hình Let's Encrypt SSL)|
| Process Management: PM2 Cluster Mode (Quản lý đa luồng Node.js) |
| Database: MongoDB Community Server 4.x / MongoDB Atlas Cloud |
| Storage & Mailing: Google Cloud Platform (Drive API & Gmail SMTP) |
+-----------------------------------------------------------------------+
Phân tích hiệu quả kinh tế (Cost-Benefit Analysis & ROI)
- Chi phí bản quyền phần mềm: $0\text{ VNĐ}$ (Tận dụng hoàn toàn mã nguồn mở miễn phí: MongoDB, NodeJS, Angular, Express).
- Chi phí hạ tầng máy chủ: Chỉ cần 1 VPS cơ bản (khoảng $150.000 - 300.000\text{ VNĐ/tháng}$).
- Thời gian hoàn vốn (ROI): Ước tính từ $2 - 4\text{ tháng}$ dựa trên việc cắt giảm 1 vị trí nhân sự trực quầy ghi danh và giảm thiểu các rủi ro thất thoát tài chính.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Hệ thống chưa tích hợp giao tiếp thời gian thực hai chiều (WebSockets / Socket.io) để hiển thị thông báo đẩy tức thì cho giảng viên mà vẫn phụ thuộc vào việc tải lại hoặc nhận email.
- Chưa hỗ trợ tính năng xuất báo cáo tài chính nâng cao ra các định dạng chuẩn kế toán chuyên sâu (như file
.xlsx mã hóa phức tạp hoặc tích hợp hóa đơn điện tử VNPT/Viettel).
Hướng phát triển trong tương lai
- Ứng dụng Trí tuệ Nhân tạo (AI): Ứng dụng thuật toán tối ưu hóa di truyền (Genetic Algorithm) để tự động sắp xếp thời khóa biểu thông minh cho toàn bộ học kỳ dựa trên số lượng phòng và khung giờ trống của giáo viên.
- Mở rộng nền tảng di động: Phát triển ứng dụng di động dành riêng cho Giảng viên và Học viên bằng framework Flutter hoặc React Native sử dụng chung hệ thống RESTful API hiện có.
Đối tượng hưởng lợi
- Học viên & Khách hàng: Trải nghiệm quy trình tìm kiếm và đăng ký khóa học liền mạch, thanh toán học phí nhanh chóng và bảo mật qua mã QR mà không cần đến trực tiếp trung tâm.
- Giảng viên & Nhân viên: Quản lý lịch dạy rõ ràng, chủ động thực hiện báo nghỉ/báo bù và tương tác gửi tài liệu học tập đến lớp học chỉ với 1 cú click.
- Chủ doanh nghiệp & Quản trị viên: Nắm bắt dữ liệu kinh doanh và doanh thu theo thời gian thực, tối ưu hóa công suất khai thác phòng học, hạn chế sai sót và thất thoát.
- Cộng đồng lập trình viên & Sinh viên: Cung cấp tài liệu tham khảo thực chiến về kiến trúc MEAN Stack hoàn chỉnh, cách thức thiết kế RESTful API chuẩn mực và quy trình tích hợp các API dịch vụ bên thứ ba (MoMo, Google Drive, reCAPTCHA).
Câu hỏi thường gặp
1. Hệ thống cần yêu cầu phần cứng tối thiểu như thế nào để triển khai?
Hệ thống Backend NodeJS và Database MongoDB hoạt động rất nhẹ nhàng. Môi trường triển khai chỉ cần máy chủ ảo (VPS) chạy Linux Ubuntu với 1 vCPU và 2GB RAM là đủ đáp ứng cho trung tâm có lưu lượng truy cập từ $1.000 - 3.000$ học viên hoạt động đều đặn.
2. Dữ liệu thanh toán của học viên qua MoMo có được đảm bảo an toàn không?
Hoàn toàn an toàn. Hệ thống không lưu trữ bất kỳ thông tin tài khoản ngân hàng hay mật khẩu ví của người dùng. Mọi giao dịch đều được chuyển hướng đến cổng thanh toán bảo mật của MoMo và kết quả giao dịch được xác thực ngược lại hệ thống thông qua chữ ký số mã hóa HMAC-SHA256.
3. Tại sao đề tài lại lựa chọn cơ sở dữ liệu MongoDB thay vì MySQL truyền thống?
MongoDB lưu trữ dữ liệu dạng Document JSON linh hoạt, cho phép cấu trúc thông tin của khóa học, lộ trình học phần hoặc thông tin thời khóa biểu biến đổi linh hoạt mà không cần thực hiện các thao tác ALTER TABLE phức tạp. Hơn nữa, việc trao đổi dữ liệu JSON tự nhiên giữa MongoDB, Node.js và Angular giúp tăng tốc độ xử lý I/O và đơn giản hóa mã nguồn.
4. Hệ thống xử lý thế nào khi xảy ra mất kết nối mạng trong lúc thanh toán?
MoMo cung cấp cơ chế Webhook IPN (Instant Payment Notification) chạy ngầm từ máy chủ MoMo sang máy chủ hệ thống. Ngay cả khi trình duyệt của học viên bị tắt hoặc mất mạng sau khi chuyển tiền thành công, máy chủ MoMo vẫn tự động gọi API cập nhật trạng thái hóa đơn của học viên sang "Đã thanh toán".
5. Dự án có thể mở rộng cho chuỗi nhiều cơ sở trung tâm được không?
Có. Cấu trúc Database đã được thiết kế mở để có thể bổ sung trường branch_id (Cơ sở) trong các Collection Rooms, Classes, và Users, từ đó hỗ trợ mô hình quản lý tập trung đa chi nhánh một cách dễ dàng.
Kết luận
Đồ án tốt nghiệp "Xây dựng website quản lý trung tâm Anh ngữ sử dụng MEAN Stack" của sinh viên Trần Viết Bảo và Đoàn Văn Hiệp (Khoa Đào tạo Chất lượng cao - Trường Đại học Sư phạm Kỹ thuật TP.HCM) đã giải quyết trọn vẹn và chuyên sâu bài toán chuyển đổi số cho mô hình giáo dục ngoại ngữ. Bằng việc kết hợp sức mạnh của bộ công nghệ MEAN Stack cùng các dịch vụ đám mây tiên tiến, đề tài không chỉ đạt được sự hoàn thiện về mặt học thuật mà còn chứng minh tính ứng dụng thực tiễn cao, mang lại giá trị vận hành rõ rệt cho các trung tâm đào tạo hiện đại.