I. Tổng quan về đồ án NodeJS ReactJS và website bán giày SE121
Đồ án SE121 L21 PMCL là báo cáo đồ án 1 của nhóm sinh viên Trường Đại học Công nghệ Thông tin, Khoa Công nghệ Phần mềm. Nhóm gồm Trần Duy Khánh và Nguyễn Hữu Trí, thực hiện dưới sự hướng dẫn của giảng viên Thái Thụy Hàn Uyển. Đồ án tập trung nghiên cứu hai công nghệ web hiện đại là NodeJS và ReactJS, đồng thời ứng dụng vào xây dựng hệ thống quản lý bán giày thực tế. Hệ thống hướng đến việc số hóa quy trình quản lý cửa hàng giày, bao gồm nhập kho, bán hàng, quản lý nhà cung cấp và báo cáo tài chính. Kiến trúc phân lớp rõ ràng với frontend ReactJS giao tiếp backend NodeJS qua REST API. Cơ sở dữ liệu sử dụng MySQL kết hợp Firebase. Hệ thống phân quyền cho năm nhóm người dùng: chủ cửa hàng, nhân viên kho, nhân viên bán hàng, nhân viên kế toán và khách hàng. Mỗi nhóm có chức năng và quyền hạn riêng biệt, đảm bảo an toàn dữ liệu và vận hành hiệu quả.
1.1. Mục tiêu và phạm vi đồ án SE121 L21 PMCL
Đồ án đặt ra mục tiêu kép: nghiên cứu lý thuyết về NodeJS và ReactJS, sau đó áp dụng vào bài toán thực tế. Phạm vi bao gồm toàn bộ nghiệp vụ cửa hàng giày từ nhập hàng, quản lý kho, bán hàng đến lập báo cáo lợi nhuận. Hệ thống xử lý các biểu mẫu nghiệp vụ như phiếu nhập kho, phiếu bán hàng, phiếu chi và thẻ nhân viên. Mô hình Usecase mô tả đầy đủ hơn 50 tình huống sử dụng, phủ toàn bộ luồng nghiệp vụ cần thiết của một cửa hàng bán lẻ hiện đại.
1.2. Công nghệ nền tảng NodeJS và ReactJS trong hệ thống
NodeJS đóng vai trò backend server với khả năng xử lý I/O bất đồng bộ, phù hợp cho các API phục vụ nhiều yêu cầu đồng thời. ReactJS xây dựng giao diện người dùng dạng Single Page Application, giúp trải nghiệm mượt mà và phản hồi nhanh. Kiến trúc MVC được áp dụng để tách biệt logic xử lý, dữ liệu và giao diện. Sự kết hợp này tạo ra hệ thống fullstack JavaScript thuần nhất, giảm chi phí chuyển đổi ngữ cảnh kỹ thuật giữa frontend và backend.
II. Phân tích bài toán quản lý bán giày và yêu cầu hệ thống
Qua khảo sát hiện trạng, nhóm nhận thấy các cửa hàng giày vừa và nhỏ đang quản lý thủ công bằng sổ sách hoặc bảng tính. Quá trình này dẫn đến sai sót nhập liệu, khó tra cứu lịch sử giao dịch và mất nhiều thời gian đối soát kho. Bài toán đặt ra là xây dựng phần mềm thay thế quy trình thủ công, đảm bảo tính chính xác và tức thời. Hệ thống cần quản lý năm nhóm đối tượng chính: chủ cửa hàng có quyền cao nhất, nhân viên kho phụ trách nhập xuất hàng, nhân viên bán hàng xử lý đơn hàng online và offline, nhân viên kế toán quản lý tài chính, và khách hàng chỉ có quyền xem và mua sản phẩm. Yêu cầu phi chức năng bao gồm hiệu suất cao, bảo mật phân quyền nghiêm ngặt và giao diện thân thiện. Danh sách usecase gồm hơn 50 kịch bản, từ đăng nhập, đổi mật khẩu đến các nghiệp vụ phức tạp như lập phiếu nhập kho và báo cáo lợi nhuận.
2.1. Phân tích các Actor và phân quyền trong hệ thống
Chủ cửa hàng có toàn quyền: thay đổi quy định, xem báo cáo lợi nhuận, quản lý người dùng và nhà cung cấp. Nhân viên kho quản lý phiếu nhập kho, kiểm kê tồn kho và xuất hàng. Nhân viên bán hàng lập phiếu bán hàng, quản lý giỏ hàng và đơn đặt hàng online. Nhân viên kế toán lập phiếu chi và theo dõi dòng tiền. Khách hàng chỉ xem sản phẩm và thực hiện mua hàng. Phân quyền rõ ràng giảm thiểu rủi ro thao tác sai và bảo vệ dữ liệu nhạy cảm.
2.2. Danh sách biểu mẫu nghiệp vụ cần số hóa
Hệ thống số hóa mười biểu mẫu nghiệp vụ thực tế. Phiếu nhập hàng ghi nhận thông tin đơn đặt hàng từ nhà cung cấp. Phiếu nhập kho xác nhận hàng đã về kho với đủ số lượng và quy cách. Phiếu bán hàng ghi nhận giao dịch bán lẻ. Phiếu chi ghi nhận thanh toán cho nhà cung cấp. Biểu mẫu sản phẩm mới thu thập thông tin size, màu sắc, đơn giá mua và bán. Thẻ nhân viên lưu hồ sơ nhân sự. Các biểu mẫu có quy định ràng buộc rõ ràng, ví dụ nhà cung cấp và hãng sản xuất phải nằm trong danh sách được duyệt.
III. Giải pháp kỹ thuật với NodeJS ReactJS MySQL và Firebase
Kiến trúc hệ thống theo mô hình MVC ba lớp. NodeJS xử lý tầng logic nghiệp vụ và API, ReactJS phụ trách tầng giao diện, MySQL lưu trữ dữ liệu quan hệ chính, Firebase hỗ trợ xác thực và dữ liệu thời gian thực. NodeJS phù hợp với hệ thống này vì cơ chế event-driven và non-blocking I/O cho phép xử lý đồng thời nhiều yêu cầu mà không tạo độ trễ. ReactJS xây dựng giao diện dạng component tái sử dụng, giảm thời gian phát triển và dễ bảo trì. MySQL đảm bảo tính toàn vẹn dữ liệu cho các giao dịch tài chính phức tạp. Firebase cung cấp khả năng cập nhật dữ liệu thời gian thực, phù hợp cho thông báo trạng thái đơn hàng. Thiết kế cơ sở dữ liệu gồm hơn 23 bảng, mô tả đầy đủ thực thể từ sản phẩm, kho, đơn hàng đến nhân viên và nhà cung cấp.
3.1. Vai trò của ReactJS trong xây dựng giao diện quản lý
ReactJS sử dụng Virtual DOM để cập nhật giao diện chỉ khi dữ liệu thay đổi, tối ưu hiệu suất render. Component-based architecture cho phép tái sử dụng giao diện như bảng danh sách sản phẩm, form nhập liệu và biểu đồ báo cáo. Single Page Application loại bỏ việc tải lại trang, mang lại trải nghiệm mượt mà cho nhân viên vận hành. JSX kết hợp HTML và JavaScript trong một file duy nhất, tăng tốc phát triển giao diện. Đây là lý do ReactJS được chọn cho các màn hình quản lý phức tạp của hệ thống.
3.2. Vai trò của NodeJS trong xây dựng backend API bán giày
NodeJS cung cấp môi trường runtime JavaScript phía server, cho phép dùng chung ngôn ngữ với frontend. Cơ chế non-blocking I/O xử lý hàng nghìn yêu cầu đồng thời mà không chặn luồng chính. NodeJS phù hợp xây dựng JSON API cung cấp dữ liệu cho ReactJS. Khả năng xây dựng proxy phân vùng luồng dữ liệu giúp hệ thống xử lý báo cáo lớn mà không ảnh hưởng đến các yêu cầu thời gian thực. Nhược điểm là ứng dụng tính toán nặng sẽ tiêu tốn tài nguyên do phải qua thêm trình biên dịch JavaScript.
IV. Kết quả đồ án SE121 và ứng dụng thực tiễn trong thương mại điện tử
Đồ án SE121 L21 PMCL hoàn thành hệ thống quản lý bán giày đầy đủ chức năng, bao gồm giao diện cho năm nhóm người dùng với hơn 50 usecase được đặc tả chi tiết. Giao diện gồm các màn hình quản lý sản phẩm, nhập kho, bán hàng, nhà cung cấp, người dùng và báo cáo tài chính. Hệ thống tự động tính toán lợi nhuận dựa trên tỷ lệ do chủ cửa hàng cấu hình và cảnh báo khi tồn kho dưới mức tối thiểu quy định. Đây là nền tảng thực hành quan trọng giúp sinh viên nắm vững fullstack JavaScript trong môi trường doanh nghiệp. Kiến thức NodeJS và ReactJS từ đồ án này có thể chuyển hóa trực tiếp vào các dự án thương mại điện tử thực tế. Stack công nghệ MERN (MongoDB/MySQL, Express, React, Node) đang được nhiều doanh nghiệp Việt Nam ưu tiên tuyển dụng, nên đồ án này có giá trị thực tiễn cao cho sinh viên chuẩn bị ra trường.
4.1. Các tính năng nổi bật của website quản lý bán giày
Tính năng quản lý kho cho phép lập, sửa và xóa phiếu nhập kho với kiểm tra ràng buộc tự động. Tính năng bán hàng xử lý đơn đặt hàng online và tại quầy trong cùng một giao diện. Báo cáo lợi nhuận tự động tổng hợp doanh thu và chi phí theo kỳ. Tính năng quản lý nhà cung cấp với danh sách được kiểm soát chặt chẽ, tránh nhập hàng từ nguồn không rõ ràng. Phân quyền theo vai trò đảm bảo mỗi nhân viên chỉ thao tác trong phạm vi được giao, giảm rủi ro gian lận nội bộ.
4.2. Bài học kinh nghiệm và hướng phát triển tiếp theo
Đồ án cho thấy ReactJS và NodeJS là bộ đôi hiệu quả cho ứng dụng quản lý vừa và nhỏ. Việc kết hợp MySQL cho dữ liệu quan hệ và Firebase cho tính năng thời gian thực là lựa chọn linh hoạt. Hướng phát triển tiếp theo có thể bổ sung ứng dụng di động với React Native, tích hợp thanh toán trực tuyến và module phân tích dữ liệu bán hàng bằng machine learning. Kinh nghiệm thiết kế usecase và cơ sở dữ liệu từ đồ án này áp dụng được trực tiếp vào các dự án phần mềm thương mại quy mô lớn hơn.