Bối cảnh và vấn đề nghiên cứu
Đồ án tốt nghiệp "Xây dựng website Quản lý công việc với công nghệ MERN Stack" được thực hiện bởi sinh viên Hoàng Vũ Trường Giang và Lê Duy Khiêm, dưới sự hướng dẫn của ThS. Nguyễn Hữu Trung tại Bộ môn Công nghệ Phần mềm, Khoa Công nghệ Thông tin – Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh (khóa 2020 – 2024).
Lý do chọn đề tài và bối cảnh thực tiễn
Trong bối cảnh công nghệ thông tin phát triển nhanh chóng, khối lượng và yêu cầu chất lượng công việc trong các tổ chức, doanh nghiệp ngày càng tăng cao. Lập kế hoạch và quản lý tiến độ được xác định là yếu tố đóng góp đến 80% sự thành công của một dự án. Tuy nhiên, quá trình quản lý công việc trên thực tế thường gặp phải bốn rào cản chính:
- Thiếu sự giao tiếp hiệu quả giữa các thành viên, dẫn đến việc không nắm bắt chính xác thời hạn hoàn thành hoặc thiếu kênh trao đổi trực tiếp khi phát sinh vướng mắc.
- Hạn chế trong kỹ năng phối hợp nhóm, phân tán sự tập trung vào các công việc cá nhân và gặp khó khăn khi xác định độ ưu tiên của từng đầu việc.
- Thiếu một quy trình làm việc chuẩn hóa để theo dõi trạng thái nhiệm vụ, phân bổ nguồn lực và quản trị thành viên.
- Khó khăn trong quản lý thời gian, cân bằng tiến độ và cập nhật trạng thái giữa các đầu việc liên quan.
Để giải quyết các bất cập trên, đề tài tập trung xây dựng một giải pháp phần mềm nền tảng web nhằm hỗ trợ người dùng quản lý công việc cá nhân và công việc nhóm một cách có hệ thống.
Mục tiêu và nhiệm vụ nghiên cứu
Mục tiêu tổng quát của đề tài là xây dựng hoàn chỉnh một ứng dụng web quản lý công việc với giao diện trực quan, hỗ trợ phân công, theo dõi tiến độ, gửi thông báo nhắc hạn theo thời gian thực và cung cấp khả năng phân quyền linh hoạt.
Nhiệm vụ của luận văn được phân định cụ thể theo hai khối nội dung:
1. Nhiệm vụ lý thuyết:
- Tìm hiểu và làm chủ các công nghệ nền tảng: ReactJS, Node.js, JSON Web Token (JWT), WebSocket.
- Nghiên cứu các phương pháp và mô hình quản lý dự án linh hoạt, trọng tâm là quy trình Scrum và bảng Kanban trong Agile.
2. Nhiệm vụ thực hành:
- Xây dựng hệ thống Backend bằng Node.js và Express.js, thiết kế toàn bộ hệ thống RESTful API cho các phân hệ nghiệp vụ.
- Thiết kế và triển khai cơ sở dữ liệu phi quan hệ (NoSQL) với MongoDB để lưu trữ dữ liệu người dùng, dự án và tác vụ.
- Cài đặt cơ chế xác thực và ủy quyền an toàn cho hệ thống API thông qua JSON Web Token (JWT).
- Thiết kế và xây dựng giao diện người dùng phía Frontend bằng thư viện ReactJS kết hợp Material-UI và Redux Toolkit.
- Triển khai giao thức WebSocket (Socket.io) để xử lý và đồng bộ dữ liệu theo thời gian thực giữa các máy khách.
- Mô hình hóa và số hóa quy trình quản lý dự án theo khung Scrum và Kanban.
- Xây dựng cơ chế phân quyền tùy chỉnh ở hai cấp độ: Không gian làm việc (Workspace) và Dự án (Project).
- Tích hợp dịch vụ Google Calendar phục vụ theo dõi công việc cá nhân, hệ thống tạo báo cáo tiến độ trực quan và hỗ trợ tự động hóa một số thao tác quản lý.
Đối tượng và phạm vi nghiên cứu
- Đối tượng nghiên cứu: Các quy trình nghiệp vụ trong quản lý dự án cá nhân và nhóm; các giải pháp công nghệ công nghệ web trong ngăn xếp MERN (MongoDB, Express.js, ReactJS, Node.js), cơ chế truyền thông hai chiều WebSocket, giải thuật xác thực JWT và các dịch vụ đám mây liên quan.
- Phạm vi nghiên cứu:
- Về giao diện người dùng: Thiết kế trải nghiệm người dùng hiện đại, tối ưu hóa thao tác quản lý thẻ công việc và bảng Kanban kéo thả.
- Về logic nghiệp vụ: Tập trung vào các phân hệ cốt lõi gồm quản lý không gian làm việc, quản lý dự án, danh sách và thẻ công việc, theo dõi tiến độ, bình luận trao đổi, đính kèm tệp tin, thông báo và nhắc hạn, quản lý chu kỳ Sprint và phân quyền chi tiết.
- Về hệ thống xử lý: Xây dựng hệ thống RESTful API hoàn chỉnh kết nối cơ sở dữ liệu MongoDB và tích hợp các dịch vụ bên thứ ba (Google Cloud Platform, Google OAuth 2.0, Gmail SMTP).
- Thời gian thực hiện: Từ ngày 01/03/2024 đến ngày 12/07/2024.
Cơ sở lý thuyết và phương pháp
Khung lý thuyết và mô hình quản lý dự án
Khóa luận vận dụng các nguyên lý cốt lõi của phương pháp luận phát triển phần mềm linh hoạt (Agile Software Development) dựa trên Tuyên ngôn Agile với 4 giá trị và 12 nguyên tắc:
- Mô hình Scrum: Khung làm việc lặp đi lặp lại theo các chu kỳ ngắn cố định gọi là Sprint (kéo dài từ 2 đến 4 tuần). Đề tài nghiên cứu sâu về 3 vai trò (Product Owner, Scrum Master, Development Team), 3 trụ cột (Minh bạch, Thanh tra, Thích ứng), 5 sự kiện (Product Backlog Refinement, Sprint Planning, Daily Scrum, Sprint Review, Sprint Retrospective) và các tạo tác quan trọng (Product Backlog, Sprint Backlog, Product Goal, Sprint Goal, Increment, biểu đồ Burndown Chart).
- Phương pháp Kanban: Bắt nguồn từ hệ thống sản xuất của Toyota, vận hành trên 4 nguyên lý chính: trực quan hóa luồng công việc qua các cột trạng thái (To do, Doing, Done); hạn chế số lượng công việc đang xử lý đồng thời (WIP - Work In Progress); tối ưu hóa và duy trì dòng chảy luồng công việc; cải tiến liên tục quy trình.
| Mô hình |
Cơ chế hoạt động cốt lõi |
Các tạo tác / Thành phần chính |
Phạm vi ứng dụng tối ưu |
| Scrum |
Vòng lặp tăng trưởng (Sprint 2 - 4 tuần), phân định vai trò rõ ràng |
Product Backlog, Sprint Backlog, Burndown Chart, Sprint Goal, Increment |
Dự án cần phân chia giai đoạn rõ ràng, phát hành tính năng định kỳ |
| Kanban |
Luồng công việc liên tục, giới hạn công việc đang làm (WIP limit) |
Bảng công việc (Board), Cột trạng thái (Column), Thẻ công việc (Card) |
Dự án ưu tiên xử lý tác vụ liên tục, hạn chế sự ùn tắc cục bộ |
Cơ sở lý thuyết công nghệ
Đề tài dựa trên nền tảng kiến trúc phần mềm hướng dịch vụ web hiện đại:
- TypeScript: Ngôn ngữ mở rộng của JavaScript bổ sung hệ thống kiểu tĩnh tại thời điểm biên dịch, hỗ trợ Generic, Interface và Enum, giúp giảm thiểu lỗi runtime và nâng cao hiệu quả tái cấu trúc mã nguồn.
- Node.js & Kiến trúc bất đồng bộ: Nền tảng thực thi JavaScript đa nền tảng dựa trên V8 JavaScript Engine kết hợp cùng thư viện lõi LIBUV. Mô hình I/O non-blocking đơn luồng (Single Threaded Event Loop) kết hợp Thread Pool cho các tác vụ nặng giúp hệ thống xử lý lượng lớn kết nối đồng thời với mức tiêu hao tài nguyên thấp.
- Express.js: Framework ứng dụng web tối giản cho Node.js, cung cấp hệ thống Routing mạnh mẽ và kiến trúc Middleware linh hoạt cho việc xử lý tiền kiểm tra request, xác thực, ghi log và xử lý ngoại lệ.
- MongoDB & Mongoose ODM: Cơ sở dữ liệu NoSQL hướng tài liệu (Document-oriented) lưu trữ dưới dạng BSON/JSON linh hoạt, hỗ trợ Replica Set phân tán và Aggregation Pipeline xử lý dữ liệu tổng hợp hiệu năng cao.
- ReactJS & Kiến trúc Virtual DOM: Thư viện giao diện người dùng sử dụng cú pháp mở rộng JSX và DOM ảo (Virtual DOM) để so sánh (diffing) và cập nhật cục bộ các thành phần thay đổi, giảm thiểu chi phí re-render trên DOM thật.
- Redux & Redux Toolkit: Công cụ quản lý trạng thái tập trung với luồng dữ liệu một chiều (Uni-directional data flow), tuân thủ nguyên lý Single Source of Truth qua một Store duy nhất, xử lý state thông qua các hàm thuần khiết (Reducers) và Actions.
- JSON Web Token (JWT - RFC 7519): Tiêu chuẩn xác thực phân tán gồm 3 phần (Header, Payload, Signature) mã hóa chữ ký HMAC SHA256 hoặc RSA, giúp duy trì phiên làm việc không trạng thái (stateless) giữa Client và Server.
- WebSocket & Socket.io: Giao thức kết nối song công hai chiều (Full-duplex) trên một kết nối TCP duy nhất, giảm độ trễ tối đa cho các tương tác thời gian thực so với kỹ thuật HTTP polling truyền thống.
Phương pháp nghiên cứu và nguồn dữ liệu
- Phương pháp phân tích - tổng hợp: Khảo sát lý thuyết công nghệ, nghiên cứu các mô hình quản lý dự án Agile/Scrum/Kanban và các tiêu chuẩn bảo mật hệ thống web.
- Phương pháp khảo sát so sánh hiện trạng: Khảo sát chi tiết hai phần mềm quản lý công việc phổ biến trên thị trường là Trello và Jira để xác định ưu nhược điểm, từ đó định hình tập yêu cầu chức năng cho hệ thống mới.
- Phương pháp thiết kế và phát triển phần mềm: Áp dụng phương pháp phân tích thiết kế hướng đối tượng kết hợp ngôn ngữ mô hình hóa thống nhất (UML) để xây dựng biểu đồ Use Case, biểu đồ tuần tự (Sequence Diagram), thiết kế lược đồ cơ sở dữ liệu và triển khai mã nguồn theo mô hình Client - Server.
Thiết kế và triển khai
Kiến trúc công nghệ tổng thể
Hệ thống được phát triển theo mô hình tách biệt hoàn toàn giữa Frontend và Backend, giao tiếp qua giao thức HTTP/HTTPS (RESTful APIs) và WebSocket (Socket.io).
+-------------------------------------------------------------------+
| FRONTEND CLIENT |
| ReactJS + TypeScript + Redux Toolkit + Material-UI + dnd-kit |
+---------------------------------+---------------------------------+
|
HTTP / REST APIs | WebSocket (Socket.io)
v
+-------------------------------------------------------------------+
| BACKEND SERVER |
| Node.js + Express.js + Middleware Architecture |
| (JWT Auth, Helmet, CORS, Cookie-Parser, Nodemailer, Passport) |
+---------------------------------+---------------------------------+
|
v
+-------------------------------------------------------------------+
| DATABASE & THIRD-PARTY |
| MongoDB (Mongoose ODM) | Google OAuth 2.0 | Gmail SMTP |
+-------------------------------------------------------------------+
| Tầng kiến trúc |
Công nghệ / Thư viện |
Vai trò và chức năng chính |
| Frontend |
ReactJS, TypeScript |
Xây dựng giao diện ứng dụng đơn trang (SPA) với kiểu dữ liệu tĩnh an toàn |
|
Redux Toolkit |
Quản lý trạng thái toàn cục tập trung (Store, Reducers, Actions) |
|
Material-UI (MUI) |
Cung cấp hệ thống UI Component chuẩn hóa theo Material Design |
|
dnd-kit |
Thư viện xử lý sự kiện kéo thả (Drag-and-Drop) trên bảng Kanban |
|
Axios |
Gửi các HTTP Request bất đồng bộ đến máy chủ Backend |
|
Dayjs, React Hook Form, Yup |
Xử lý dữ liệu thời gian, kiểm soát và xác thực tính hợp lệ của biểu mẫu |
| Backend |
Node.js, Express.js |
Xây dựng dịch vụ API, định tuyến (Routing) và xử lý logic nghiệp vụ |
|
Mongoose ODM |
Định nghĩa Schema, ánh xạ và quản lý quan hệ dữ liệu MongoDB |
|
jsonwebtoken |
Tạo, ký và giải mã JWT phục vụ xác thực người dùng |
|
Socket.io |
Xử lý truyền phát sự kiện và dữ liệu cập nhật theo thời gian thực |
|
Nodemailer, Pug |
Soạn thảo template HTML và gửi email tự động (xác thực tài khoản, khôi phục mật khẩu) |
|
Helmet, CORS, Cookie-parser |
Thiết lập HTTP Headers an toàn, cấu hình chia sẻ tài nguyên và xử lý cookie |
|
Passport-google-oauth20 |
Triển khai chiến lược xác thực tài khoản qua Google OAuth 2.0 |
| Cơ sở dữ liệu |
MongoDB |
Lưu trữ dữ liệu phi quan hệ, phân tán và mở rộng linh hoạt |
Thiết kế dữ liệu và logic nghiệp vụ
Hệ thống thiết kế cơ sở dữ liệu hướng tài liệu trên MongoDB với các cấu trúc Collection chính phục vụ đầy đủ vòng đời dự án: Users, Workspaces, Projects, Sprints, Columns, Tasks, Labels, Roles, Priorities, TaskLinks và Comments.
Cơ chế phân quyền được tổ chức chặt chẽ theo mô hình điều khiển truy cập dựa trên vai trò (RBAC) tại hai cấp quản trị:
- Phân quyền tại Không gian làm việc (Workspace Level): Quản lý quyền tạo dự án mới, mời hoặc xóa thành viên, cập nhật thông tin không gian làm việc và cấu hình các nhóm quyền tùy chỉnh trong phạm vi tổ chức.
- Phân quyền tại Dự án (Project Level): Thiết lập chi tiết quyền thao tác đối với từng giai đoạn Sprint, quyền tạo/chỉnh sửa/xóa cột công việc, quản lý loại công việc, độ ưu tiên, phân bổ nhãn và thiết lập quyền chỉnh sửa trên từng thẻ công việc.
Kiểm thử hệ thống
Nhóm nghiên cứu đã xây dựng danh mục các ca kiểm thử (Test Cases) toàn diện cho cả hai phía Frontend và Backend, tập trung vào:
- Kiểm thử chức năng xác thực: Đăng ký tài khoản, xác thực mã qua email, đăng nhập qua JWT/Google OAuth 2.0, cấp phát và thu hồi token, khôi phục mật khẩu.
- Kiểm thử phân hệ Không gian làm việc và Dự án: Tạo mới, cập nhật thông tin, gán vai trò, quản lý danh sách thành viên và kiểm tra tính toàn vẹn quyền truy cập.
- Kiểm thử luồng thao tác Kanban và Scrum: Kéo thả thẻ công việc giữa các cột, cập nhật trạng thái theo thời gian thực qua WebSocket, tạo và kích hoạt Sprint, liên kết thẻ công việc và cập nhật mức độ ưu tiên.
Nội dung chính theo từng chương
Phần mở đầu
Trình bày cơ sở khoa học và thực tiễn của đề tài, xác định tầm quan trọng của việc quản lý dự án trong môi trường số hóa. Tác giả nêu rõ mục đích xây dựng hệ thống, đối tượng nghiên cứu, giới hạn phạm vi đề tài, phương pháp triển khai và phân công công việc cụ thể giữa hai thành viên trong nhóm nghiên cứu.
Chương 1: Cơ sở lý thuyết
Nghiên cứu có hệ thống các nền tảng kỹ thuật và lý thuyết quản trị:
- Phân tích sâu ngôn ngữ TypeScript, ưu thế kiểm tra kiểu tĩnh và khả năng giảm lỗi trong các dự án quy mô lớn.
- Phân tích cơ chế xác thực không trạng thái của JWT với cấu trúc 3 thành phần (Header, Payload, Signature) cùng luồng trao đổi token giữa Client, Authentication Server và Application Server.
- Giới thiệu giao thức WebSocket và khả năng duy trì kết nối song công liên tục qua TCP.
- Trình bày thư viện ReactJS, cơ chế tối ưu hóa giao diện của Virtual DOM và cú pháp JSX; thư viện Redux Toolkit và mô hình quản lý trạng thái tập trung; thư viện giao diện Material-UI.
- Khảo sát kiến trúc Node.js, cơ chế điều phối của Event Loop và phân tải tác vụ I/O qua Thread Pool của thư viện LIBUV; framework Express.js với kiến trúc Middleware.
- Trình bày hệ quản trị cơ sở dữ liệu NoSQL MongoDB, các đặc tính của Document/Collection, cơ chế nhân rộng Replica Set và công cụ Aggregation Pipeline.
- Khái quát về nền tảng điện toán đám mây Google Cloud Platform (GCP) và các dịch vụ bổ trợ.
- Trình bày toàn diện về phương pháp luận Agile, quy trình Scrum (vai trò, sự kiện, tạo tác, biểu đồ Burndown) và phương pháp quản lý trực quan Kanban.
Chương 2: Khảo sát và phân tích hiện trạng
Chương này đánh giá thực trạng quản lý công việc và tiến hành phân tích chi tiết hai công cụ phần mềm hiện có:
- Trello: Đánh giá điểm mạnh về giao diện trực quan, dễ thao tác kéo thả và chi phí ban đầu thấp; chỉ rõ các hạn chế cốt lõi như thiếu cơ chế phân quyền quản trị chi tiết, khả năng tương tác nhóm hạn chế, thiếu báo cáo đo lường tỷ lệ hoàn thành công việc chuyên sâu ở bản miễn phí.
- Jira: Nhận định thế mạnh vượt trội về khả năng phân quyền mạnh mẽ, hỗ trợ chuyên sâu các quy trình phần mềm phức tạp và báo cáo đa dạng; chỉ ra các rào cản về chi phí bản quyền đắt đỏ, quy trình cấu hình phức tạp, rào cản thuật ngữ tiếng Anh chuyên môn không phù hợp cho các nhóm dự án vừa và nhỏ.
- Trên cơ sở đó, tác giả lập bảng phân tích tập yêu cầu chức năng và phi chức năng cho hệ thống website cần xây dựng.
Chương 3: Mô hình hóa yêu cầu
Mô hình hóa toàn bộ hệ thống phần mềm bằng ngôn ngữ UML:
- Xây dựng biểu đồ tổng quan Use Case cho người dùng, phân hệ Không gian làm việc và phân hệ Dự án.
- Thiết lập bảng đặc tả chi tiết cho 23 Use Case trọng tâm, bao gồm: Đăng ký, Đăng nhập, Cập nhật thông tin cá nhân, Thay đổi mật khẩu, Tạo Không gian làm việc, Mời thành viên, Tạo và Chỉnh sửa nhóm quyền Không gian làm việc, Tạo Dự án nhóm, Tạo và Chỉnh sửa nhóm quyền trong Dự án, Tạo và Chỉnh sửa Sprint, Thêm/Cập nhật loại công việc, Thêm/Cập nhật độ ưu tiên, Tạo/Cập nhật loại liên kết, Thêm/Di chuyển cột công việc, Tạo và Cập nhật công việc trong Dự án.
Chương 4: Thiết kế phần mềm
- Thiết kế cơ sở dữ liệu: Định nghĩa chi tiết cấu trúc các Collections trong MongoDB, mô hình hóa quan hệ giữa Người dùng, Không gian làm việc, Dự án, Nhóm quyền, Cột trạng thái, Thẻ công việc và các bảng dữ liệu bổ trợ.
- Thiết kế biểu đồ tuần tự (Sequence Diagrams): Xây dựng chi tiết 24 biểu đồ tuần tự mô tả chính xác luồng dữ liệu và thông điệp tương tác giữa các đối tượng (Client, Controller, Service, Model, Database) cho từng chức năng nghiệp vụ cụ thể.
Chương 5: Thiết kế và xử lý giao diện
Thiết kế chi tiết bố cục, luồng tương tác và xây dựng bảng mô tả cho 17 giao diện chính của hệ thống:
- Giao diện Trang Đăng nhập
- Giao diện Trang Xác thực email
- Giao diện Trang Đăng ký
- Giao diện Trang Khôi phục mật khẩu
- Giao diện Trang Tổng quan
- Giao diện Trang Không gian làm việc
- Giao diện Quản lý thành viên Không gian làm việc
- Giao diện Trang Tạo không gian làm việc
- Giao diện Trang Mời thành viên vào Không gian làm việc
- Giao diện Trang Thêm thành viên vào Dự án
- Giao diện Trang Chi tiết dự án (bảng Kanban và chế độ xem danh sách)
- Giao diện Trang Chi tiết công việc (Task Modal)
- Giao diện Trang Thêm thành viên vào công việc
- Giao diện Thêm/chỉnh sửa nhãn công việc
- Giao diện Thêm nhóm quyền dự án
- Giao diện Quản lý loại công việc
- Giao diện Cấu hình độ ưu tiên và loại liên kết công việc
Chương 6: Cài đặt và kiểm thử hệ thống
- Hướng dẫn chi tiết cấu hình môi trường triển khai cho cả Frontend và Backend, cài đặt các biến môi trường (.env), tích hợp các dịch vụ bên thứ ba (Google OAuth, Gmail SMTP) và kết nối cơ sở dữ liệu MongoDB.
- Xây dựng bảng kịch bản kiểm thử hệ thống (Test Cases) nhằm xác minh tính chính xác, tính toàn vẹn dữ liệu và khả năng xử lý lỗi của toàn bộ các phân hệ chức năng.
Phần kết luận
Tổng kết các kết quả đạt được về mặt kiến thức lý thuyết và sản phẩm thực tế; phân tích khách quan các ưu điểm và mặt hạn chế còn tồn đọng của phần mềm; đề xuất các định hướng nâng cấp và phát triển trong tương lai.
Kết quả và đóng góp
Kết quả đạt được
Hệ thống website quản lý công việc được cài đặt và vận hành hoàn chỉnh với các kết quả cụ thể:
- Hoàn thiện hệ thống phân quyền đa cấp linh hoạt (Custom RBAC) cho phép chủ dự án tùy biến chi tiết quyền hạn của từng nhóm người dùng trong Không gian làm việc và trong từng Dự án riêng biệt.
- Xây dựng giao diện bảng Kanban kéo thả mượt mà bằng thư viện
dnd-kit, tích hợp đồng bộ dữ liệu thời gian thực giữa các phiên làm việc của người dùng qua Socket.io.
- Triển khai thành công quy trình quản lý dự án Scrum với đầy đủ tính năng tạo Sprint, kích hoạt Sprint, chuyển giao công việc giữa các chu kỳ và quản lý Product Backlog.
- Tích hợp thành công cơ chế xác thực kép qua JWT tự xây dựng và Google OAuth 2.0, kết hợp gửi mã xác thực tự động qua dịch vụ email của Nodemailer.
- Tích hợp dịch vụ Google Calendar giúp người dùng đồng bộ và theo dõi lịch trình công việc cá nhân.
| Tiêu chí so sánh |
Phần mềm Trello |
Phần mềm Jira |
Hệ thống website đề tài |
| Giao diện & Thao tác |
Đơn giản, thân thiện, dễ kéo thả |
Phức tạp, nhiều thuật ngữ chuyên môn |
Trực quan, thân thiện, tối ưu hóa thao tác kéo thả |
| Phân quyền người dùng |
Cơ bản, không phân cấp sâu ở bản miễn phí |
Rất chi tiết, chuyên sâu |
Tùy biến nhóm quyền chi tiết theo Workspace và Project |
| Hỗ trợ quy trình Scrum |
Hạn chế (chủ yếu là bảng Kanban) |
Rất mạnh mẽ, đầy đủ quy trình |
Hỗ trợ quản lý Sprint, Backlog và trạng thái công việc |
| Cập nhật thời gian thực |
Có hỗ trợ |
Có hỗ trợ |
Tích hợp WebSocket (Socket.io) cập nhật tức thì |
| Chi phí triển khai |
Miễn phí bản cơ bản, trả phí bản nâng cao |
Chi phí bản quyền cao |
Mã nguồn mở, tự chủ triển khai và vận hành |
| Tích hợp lịch cá nhân |
Cần tiện ích mở rộng (Power-Ups) |
Có tích hợp |
Tích hợp trực tiếp với Google Calendar |
Đóng góp của đề tài
- Về mặt kỹ thuật: Cung cấp một kiến trúc tham chiếu hoàn chỉnh về việc kết hợp ngăn xếp MERN Stack (MongoDB, Express.js, ReactJS, Node.js) với TypeScript, Redux Toolkit và WebSocket để giải quyết bài toán đồng bộ dữ liệu thời gian thực trong ứng dụng web quản lý tác vụ.
- Về mặt ứng dụng: Đề xuất một giải pháp quản lý công việc cân bằng giữa sự đơn giản, trực quan của Trello và khả năng phân quyền, quản lý chu kỳ Sprint linh hoạt của Jira, phù hợp với nhu cầu của các nhóm làm việc vừa và nhỏ hoặc môi trường học tập, nghiên cứu.
Hạn chế và hướng nghiên cứu tiếp
Hạn chế của đề tài
Căn cứ theo nội dung đánh giá của tác giả trong phần kết luận của khóa luận:
- Hệ thống chưa hỗ trợ đầy đủ các loại biểu đồ thống kê chuyên sâu như biểu đồ Burndown Chart tự động hoặc báo cáo hiệu suất cá nhân chi tiết.
- Chưa hỗ trợ chế độ làm việc ngoại tuyến (Offline mode) hoặc cơ chế lưu trữ đệm cục bộ khi mất kết nối mạng đột ngột.
- Các tính năng tự động hóa quy trình làm việc (Automation rules) giữa các tác vụ còn ở mức độ cơ bản.
Hướng phát triển tiếp theo
Tác giả xác định các nội dung trọng tâm cần nâng cấp trong tương lai:
- Xây dựng hoàn chỉnh phân hệ báo cáo thống kê chuyên sâu, tự động vẽ biểu đồ Burndown Chart và biểu đồ vận tốc (Velocity Chart) cho từng chu kỳ Sprint.
- Phát triển ứng dụng di động đa nền tảng bằng React Native nhằm tận dụng lại cấu trúc Business Logic và Component từ hệ thống web.
- Tích hợp thêm các kênh thông báo đa dạng khác như đẩy thông báo qua ứng dụng di động (Push Notification), Slack hoặc Telegram.
- Mở rộng hệ thống API để cho phép tích hợp với các nền tảng quản lý mã nguồn như GitHub, Bitbucket hoặc GitLab.
Giá trị tham khảo
Báo cáo khóa luận là tài liệu tham khảo có giá trị học thuật và thực tiễn cao cho:
- Sinh viên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm: Tài liệu minh họa mẫu mực về cấu trúc một khóa luận tốt nghiệp kỹ sư phần mềm chuẩn mực, bao gồm đầy đủ các bước từ khảo sát hiện trạng, mô hình hóa Use Case, vẽ biểu đồ tuần tự (Sequence Diagram) đến thiết kế cơ sở dữ liệu NoSQL và cài đặt kiểm thử.
- Lập trình viên Fullstack phát triển với MERN Stack: Cung cấp tài liệu kỹ thuật chi tiết về cách tổ chức mã nguồn Backend bằng Node.js/Express.js, viết Middleware xác thực JWT, thiết kế Schema Mongoose tối ưu và cách quản lý trạng thái phức tạp ở Frontend với Redux Toolkit và TypeScript.
- Người nghiên cứu áp dụng Agile/Scrum vào sản phẩm số: Tham khảo cách chuyển hóa các khái niệm lý thuyết trong Scrum (Sprint, Backlog, Vai trò) và Kanban (Board, Column, Card, WIP) thành các chức năng và cấu trúc dữ liệu cụ thể trong một ứng dụng phần mềm.
Câu hỏi thường gặp
1. Cơ chế xác thực người dùng trong hệ thống được thiết kế như thế nào?
Hệ thống sử dụng cơ chế xác thực dựa trên mã thông báo JSON Web Token (JWT - RFC 7519). Khi người dùng đăng nhập bằng tài khoản hoặc thông qua Google OAuth 2.0, Authentication Server xác thực thông tin và tạo ra một chuỗi token gồm 3 phần (Header, Payload, Signature) mã hóa bằng thuật toán HMAC SHA256. Token này được gửi về phía Client và tự động đính kèm trong các HTTP Request tiếp theo để truy cập vào các tài nguyên API được bảo vệ trên Application Server mà không cần gửi lại tên đăng nhập và mật khẩu.
2. Kiến trúc xử lý bất đồng bộ của Node.js được ứng dụng ra sao trong đề tài?
Hệ thống tận dụng nền tảng Node.js với V8 JavaScript Engine và thư viện lõi LIBUV. Trong đó, Event Loop đảm nhiệm việc điều phối các sự kiện và hàm gọi lại (callback) đồng bộ và bất đồng bộ. Đối với các tác vụ I/O nặng (như truy xuất cơ sở dữ liệu MongoDB, xử lý tệp tin hoặc kết nối mạng), hệ thống tự động đẩy các tác vụ này xuống Thread Pool riêng biệt để xử lý ngầm, giúp luồng chính của Event Loop không bị tắc nghẽn (Non-blocking I/O) và duy trì khả năng phục vụ hàng nghìn kết nối đồng thời.
3. Hệ thống giải quyết nhược điểm phân quyền của Trello bằng cách nào?
Khác với Trello (bản miễn phí cho phép mọi thành viên có quyền sửa/xóa tương đương nhau), hệ thống trong đề tài thiết lập cơ chế phân quyền tùy chỉnh hai tầng (Workspace Level và Project Level). Người quản trị có thể tự tạo các nhóm quyền riêng biệt, tùy chỉnh chi tiết từng quyền hạn như: quyền mời/xóa thành viên, quyền tạo dự án, quyền quản lý cột trạng thái, quyền cấu hình Sprint và quyền gán/sửa thẻ công việc.
4. Giao diện kéo thả thẻ công việc và bảng Kanban được xây dựng bằng công nghệ gì?
Ở phía Frontend, nhóm tác giả sử dụng thư viện dnd-kit kết hợp cùng ReactJS và Material-UI (MUI). dnd-kit cung cấp bộ công cụ xử lý sự kiện kéo thả linh hoạt, hiệu năng cao, cho phép di chuyển các thẻ công việc giữa các cột trạng thái khác nhau hoặc sắp xếp lại thứ tự cột trên bảng Kanban. Khi thao tác kéo thả hoàn tất, vị trí mới của thẻ được cập nhật về cơ sở dữ liệu qua REST API và đồng thời phát tín hiệu qua Socket.io để cập nhật tức thì trên màn hình của tất cả các thành viên khác.
5. Khóa luận tích hợp các tạo tác của quy trình Scrum vào phần mềm như thế nào?
Hệ thống đã số hóa các thành phần cốt lõi của Scrum bao gồm: cho phép quản lý danh mục công việc tồn đọng (Product Backlog), tạo các chu kỳ Sprint với thời gian bắt đầu/kết thúc cụ thể (Sprint Goal), đưa các đầu việc từ Backlog vào Sprint Backlog, kích hoạt Sprint và theo dõi tiến độ hoàn thành của từng Increment trên bảng công việc trực quan.
Kết luận
Khóa luận tốt nghiệp "Xây dựng website Quản lý công việc với công nghệ MERN Stack" của sinh viên Hoàng Vũ Trường Giang và Lê Duy Khiêm đã giải quyết trọn vẹn bài toán xây dựng một nền tảng quản trị công việc nhóm và cá nhân linh hoạt. Đề tài vận dụng hiệu quả các công nghệ web hiện đại gồm ReactJS, Node.js, Express.js, MongoDB kết hợp cùng kiến trúc xác thực JWT và giao tiếp thời gian thực WebSocket. Báo cáo được trình bày khoa học, chặt chẽ từ khâu khảo sát thực trạng, mô hình hóa yêu cầu UML, thiết kế chi tiết 24 biểu đồ tuần tự đến triển khai cài đặt và kiểm thử chức năng hoàn chỉnh. Sản phẩm không chỉ đáp ứng tốt các nghiệp vụ của khung làm việc Scrum và Kanban mà còn đóng vai trò là một tài liệu kỹ thuật tham khảo hữu ích cho sinh viên và kỹ sư phát triển phần mềm Fullstack.