Bối cảnh và vấn đề nghiên cứu

Khóa luận tốt nghiệp kỹ sư ngành Công nghệ Thông tin (chuyên ngành Công nghệ Phần mềm) với đề tài "Ứng dụng MERN Stack xây dựng website bán giày" được thực hiện bởi hai sinh viên Nguyễn Thanh Giàu (MSSV: 16110317) và Trần Văn Luyện (MSSV: 16110385), dưới sự hướng dẫn của TS. Lê Vĩnh Thịnh tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh (niên khóa 2016 - 2020).

Lý do chọn đề tài xuất phát từ sự phát triển của công nghệ thông tin và sự chuyển dịch trong thói quen tiêu dùng. Việc mua bán không còn giới hạn ở các cửa hàng truyền thống mà việc mua sắm trực tuyến thông qua website thương mại điện tử đang trở nên phổ biến, thuận tiện và là một trong những lựa chọn hàng đầu của người tiêu dùng. Nhu cầu xây dựng các website bán hàng trực tuyến trở nên thiết yếu đối với các doanh nghiệp, chủ cửa hàng và cá nhân kinh doanh. Vấn đề nghiên cứu đặt ra là phải kế thừa, phát huy những ưu điểm của các nền tảng bán hàng hiện có trên thị trường, đồng thời khắc phục các hạn chế về giao diện, tính năng và trải nghiệm người dùng để đáp ứng tốt hơn nhu cầu mua sắm và quản trị.

Mục tiêu nghiên cứu tổng quát là xây dựng một website bán các mặt hàng giày nam, nữ và trẻ em với sự phong phú về nhãn hiệu, kiểu dáng. Các mục tiêu cụ thể được xác định theo hai nhóm đối tượng:

  1. Đối với khách hàng: Xây dựng giao diện thân thiện, dễ thao tác; thông tin sản phẩm hiển thị chính xác và cập nhật thường xuyên; tối ưu hóa quy trình tìm kiếm, lựa chọn và mua sắm; làm nổi bật thông tin quan trọng; hỗ trợ đăng ký, quản lý tài khoản thuận tiện và đảm bảo tính bảo mật.
  2. Đối với người quản lý: Cung cấp công cụ quản trị sản phẩm và tài khoản dễ dàng; hệ thống vận hành ổn định, dễ bảo trì; có cơ chế phân quyền người dùng rõ ràng và duy trì mức độ an toàn dữ liệu cao.

Nhiệm vụ nghiên cứu của luận văn được xác lập gồm 6 nội dung:

  1. Tìm hiểu các kiến thức cơ bản và nâng cao về cơ sở dữ liệu NoSQL MongoDB, framework ExpressJS, framework ReactJS và môi trường thực thi NodeJS (JavaScript runtime); nghiên cứu cách kết hợp bốn thành phần này thành một ứng dụng web hoàn chỉnh.
  2. Lập kế hoạch phát triển cho đề tài, xác định phạm vi nghiên cứu.
  3. Xác định mô hình phát triển đề tài.
  4. Xây dựng giao diện cho website.
  5. Viết mã nguồn phía máy chủ (back-end) để xây dựng các chức năng cho hệ thống.
  6. Tìm hiểu các phương thức thanh toán không tiền mặt và ứng dụng vào hệ thống.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Nhu cầu mua sắm của khách hàng, quy trình quản lý bán hàng của chủ kinh doanh; các công nghệ thuộc bộ giải pháp MERN Stack.
  • Phạm vi nghiên cứu: Về mặt tính năng, đề tài tập trung vào phía khách hàng (tìm kiếm sản phẩm, chọn hàng, mua hàng, xác thực đơn hàng, thanh toán trực tuyến, trò chuyện trực tuyến) và phía quản trị viên (quản lý người dùng, sản phẩm, danh mục, đơn hàng và xem báo cáo thống kê kết nối với Google Analytics). Về mặt thời gian, đề tài được triển khai trong thời gian từ ngày 31/03/2020 đến ngày 27/07/2020.

Cơ sở lý thuyết và phương pháp

Khung lý thuyết của đề tài tập trung vào kiến trúc giải pháp công nghệ (Technical Stack) MERN Stack, phục vụ việc phát triển ứng dụng trang đơn (Single Page Application - SPA) hoàn toàn bằng ngôn ngữ JavaScript trên tất cả các tầng kiến trúc:

  • MongoDB: Hệ quản trị cơ sở dữ liệu NoSQL hướng tài liệu (document-oriented), lưu trữ dữ liệu dưới định dạng tương tự JSON (BSON), không sử dụng các ràng buộc quan hệ hay các phép nối (join) phức tạp, có khả năng co giãn theo chiều ngang. Tác giả sử dụng thư viện Mongoose làm tầng mô hình hóa dữ liệu đối tượng (ODM) trên NodeJS để quản lý kết nối, định nghĩa lược đồ (schema) và thực thi truy vấn.
  • ExpressJS: Framework tối giản chạy trên nền NodeJS, đóng vai trò xây dựng dịch vụ RESTful API tiếp nhận và phản hồi các yêu cầu thông qua các phương thức HTTP (GET, POST, PUT, DELETE), quản lý phiên làm việc (session) và định tuyến (routing).
  • ReactJS: Thư viện giao diện người dùng (UI) do Facebook phát triển, ứng dụng cơ chế Virtual DOM để tối ưu hóa việc cập nhật giao diện, cú pháp JSX kết hợp mã JavaScript với HTML, và thư viện Redux để quản lý tập trung luồng dữ liệu đơn hướng (predictable state container).
  • NodeJS: Môi trường thực thi JavaScript xây dựng trên engine Google V8, hoạt động theo mô hình hướng sự kiện (event-driven) với cơ chế nhập/xuất không khóa (non-blocking I/O) và kiến trúc đơn luồng (single thread) kết hợp thư viện libuv để xử lý các tác vụ bất đồng bộ. Hệ thống sử dụng công cụ quản lý gói npm (Node Package Manager).

Phương pháp nghiên cứu thực tế bao gồm:

  • Phương pháp khảo sát và đánh giá hiện trạng: Khảo sát thực tế 4 website thương mại điện tử chuyên ngành giày dép gồm Bitis.vn, Vinagiay.vn, Buywholesalefootwear.com và Adidas.com nhằm phân tích ưu điểm, nhược điểm về giao diện và chức năng.
  • Phương pháp phân tích và mô hình hóa hướng đối tượng: Xác định các tác nhân (Actor), phân rã yêu cầu chức năng nghiệp vụ, xây dựng 15 biểu đồ ca sử dụng (Use Case Diagram), 13 biểu đồ tuần tự (Sequence Diagram) và lập 35 bảng đặc tả chi tiết luồng xử lý.
  • Phương pháp thiết kế và phát triển phần mềm: Thiết kế cấu trúc cơ sở dữ liệu NoSQL gồm 7 bộ sưu tập (collection), thiết kế giao diện người dùng và lập trình xây dựng hệ thống theo kế hoạch 17 tuần.
  • Phương pháp kiểm thử phần mềm: Áp dụng các kỹ thuật kiểm thử chức năng, thiết lập các bộ dữ liệu thử nghiệm (test case) chi tiết cho các màn hình then chốt.

Nguồn dữ liệu của đề tài bao gồm dữ liệu khảo sát từ các website bán hàng thực tế, tài liệu kỹ thuật chuyên môn về JavaScript, NodeJS, ExpressJS, ReactJS, MongoDB và các chỉ số thống kê từ công cụ Google Analytics.


Thiết kế và triển khai

Hệ thống được thiết kế theo mô hình kiến trúc phân tách giữa giao diện phía khách (Front-end) và máy chủ dịch vụ (Back-end) thông qua giao tiếp RESTful API:

Thành phần Công nghệ / Nền tảng áp dụng Chức năng trong hệ thống
Giao diện người dùng (Client) ReactJS, Redux, JSX, CSS Render giao diện SPA, quản lý trạng thái luồng dữ liệu, gửi yêu cầu HTTP
Máy chủ dịch vụ (Server) NodeJS, ExpressJS, libuv, Google V8 Xử lý nghiệp vụ, tiếp nhận các phương thức GET/POST/PUT/DELETE, cung cấp API
Quản lý kết nối dữ liệu (ODM) Mongoose Ánh xạ đối tượng, kiểm tra kiểu dữ liệu, thực thi thao tác dữ liệu với MongoDB
Cơ sở dữ liệu (Database) MongoDB (NoSQL) Lưu trữ tài liệu dưới dạng JSON/BSON, hỗ trợ truy vấn phi quan hệ
Thống kê & Phân tích Google Analytics Theo dõi số lượng truy cập, hành vi người dùng, tích hợp vào Dashboard

Cơ sở dữ liệu NoSQL được tổ chức thành 7 collection chính:

  1. users: Lưu trữ thông tin tài khoản người dùng, email, số điện thoại, mật khẩu mã hóa, thông tin cá nhân và trạng thái xóa logic (isDeleted).
  2. products: Lưu trữ thông tin chi tiết về sản phẩm giày, giá cả, hình ảnh, kích cỡ, màu sắc, số lượng tồn kho.
  3. productcategories: Lưu trữ thông tin phân loại danh mục sản phẩm (giày nam, giày nữ, giày trẻ em và các danh mục phụ).
  4. orders: Lưu trữ thông tin đơn hàng, danh sách sản phẩm đặt mua, tổng giá trị, chi phí vận chuyển, địa chỉ giao hàng và trạng thái đơn hàng.
  5. messages: Lưu trữ các thông báo, tin nhắn chung do quản trị viên gửi đến người dùng.
  6. statistics: Lưu trữ dữ liệu tổng hợp phục vụ báo cáo doanh số, số lượt đặt hàng, lượt xem sản phẩm.
  7. chats: Lưu trữ nội dung hội thoại trao đổi trực tiếp giữa khách hàng và quản trị viên.

Quy trình triển khai bao gồm việc cấu hình môi trường NodeJS, cài đặt các phụ thuộc thông qua npm, thiết lập kết nối cơ sở dữ liệu MongoDB thông qua chuỗi kết nối (connection string) trong Mongoose, xây dựng các endpoint định tuyến trên ExpressJS và cấu hình Redux store trên ReactJS. Kiểm thử phần mềm được tiến hành theo quy trình kiểm thử hệ thống với 8 bộ test case cụ thể cho các màn hình: Đăng nhập, Quên mật khẩu, Trang chủ, Chi tiết sản phẩm, Danh mục sản phẩm, Lịch sử đơn hàng, Thanh toán và Thống kê.


Nội dung chính theo từng chương

Chương 1: Khảo sát hiện trạng

Chương này tập trung khảo sát, phân tích ưu điểm và nhược điểm của 4 website bán giày đang vận hành thực tế trên thị trường:

Tên website khảo sát Ưu điểm ghi nhận Nhược điểm ghi nhận
bitis.vn Giao diện trực quan; sản phẩm phân nhóm rõ ràng; thông tin đầy đủ; có gợi ý sản phẩm, tìm cửa hàng, tin tức khuyến mãi; khôi phục mật khẩu thuận tiện; tích hợp chat qua Facebook. Menu điều hướng về trang chủ hiển thị mờ; chức năng đăng ký chỉ hỗ trợ Gmail; tìm kiếm đơn giản, chưa có gợi ý từ khóa.
vinagiay.vn Bố cục trang chủ đơn giản; phân chia sản phẩm theo loại; hiển thị sản phẩm liên quan; tìm kiếm tốt; có bản đồ hệ thống phân phối hỗ trợ mua hàng trực tiếp. Sản phẩm trên trang chủ ít (cố định 4 sản phẩm mỗi loại); không có nút điều hướng về trang chủ riêng; thiếu chức năng đăng ký và đăng nhập thành viên; giao diện còn đơn điệu.
buywholesalefootwear.com Menu phân loại rõ ràng (Boys, Girls, Men, Women, Toddler...); thao tác mua hàng dễ dàng; có chức năng tạo tài khoản, đăng nhập và chat hỗ trợ. Tìm kiếm kém hiệu quả; trang chủ có mật độ văn bản quá dày gây rối mắt; hiển thị sản phẩm thiếu trình tự hợp lý; chỉ hỗ trợ thanh toán qua thẻ tín dụng (Credit Card).
addidas.com Bố cục chuyên nghiệp; đăng nhập đa dạng (Facebook, Google, Yahoo); có mục xếp hạng và đánh giá (Ratings & Reviews), chọn kích thước, màu sắc và video đánh giá; lọc sản phẩm tốt. Menu các danh mục bố trí quá sát nhau gây khó nhìn; không có menu điều hướng riêng về trang chủ (phải bấm vào logo).

Từ kết quả khảo sát, tác giả đưa ra đánh giá chung: Đa số website thương mại điện tử đáp ứng tốt yêu cầu cơ bản về danh mục và hiển thị sản phẩm, song còn hạn chế về sức hút thị giác, bố cục thành phần còn đơn điệu, cơ chế đăng ký và thanh toán chưa linh hoạt. Đồ án rút ra bài học cần xây dựng giao diện chuyên nghiệp, minh bạch về thông tin, cung cấp đa dạng phương thức đăng nhập và thanh toán để tạo sự tin tưởng cho người tiêu dùng.

Chương 2: Cơ sở lý thuyết

Chương này trình bày toàn bộ cơ sở lý thuyết nền tảng về công nghệ phần mềm được ứng dụng:

  • Tổng quan về Technical Stack: Định nghĩa tập hợp các công nghệ nền tảng và phân tích các bộ stack phổ biến như LAMP (Linux, Apache, MySQL, PHP), LAM (AWS Lambda, Angular, MongoDB), WISA (Windows, IIS, SQL Server, ASP.NET) và MERN Stack.
  • Hệ quản trị cơ sở dữ liệu MongoDB và NoSQL: Nêu bật sự khác biệt giữa NoSQL và RDBMS truyền thống, giải quyết bài toán xử lý dữ liệu phi cấu trúc, không phụ thuộc ràng buộc toàn vẹn nghiêm ngặt (ACID) của giao dịch để tối ưu hóa tốc độ mở rộng trên nhiều máy chủ. Giới thiệu thư viện Mongoose ODM hỗ trợ kết nối, mô hình hóa đối tượng và cung cấp các phương thức thao tác dữ liệu.
  • Môi trường thực thi NodeJS: Phân tích cơ chế Single Thread kết hợp Event Loop giúp tiết kiệm tài nguyên máy chủ so với mô hình Multi-thread truyền thống. Giải thích cơ chế non-blocking I/O, mô hình hướng sự kiện (Event-driven) dựa trên lõi C++ libuv và JavaScript core, cùng vai trò quản lý gói của npm.
  • Framework ExpressJS: Trình bày vai trò giảm tải việc cấu hình máy chủ, hỗ trợ middleware, quản lý phiên và xử lý kiến trúc RESTful API tương ứng với các phương thức HTTP.
  • Thư viện ReactJS: Phân tích các thành phần cốt lõi gồm cú pháp JSX, cơ chế Virtual DOM giúp giảm thiểu chi phí cập nhật DOM thực tế trên trình duyệt, khả năng kết xuất phía máy chủ (Server-side rendering), và thư viện Redux hỗ trợ quản lý trạng thái ứng dụng một cách nhất quán.

Chương 3: Xác định và mô hình hóa yêu cầu

Chương này tiến hành phân tích chi tiết các yêu cầu chức năng, phi chức năng và mô hình hóa hệ thống:

  • Yêu cầu chức năng nghiệp vụ: Chia thành 4 nhóm nghiệp vụ gồm Lưu trữ (tài khoản, sản phẩm, đơn hàng, tin nhắn, danh sách yêu thích), Tra cứu (thông tin cá nhân, sản phẩm, lịch sử mua hàng, báo cáo), Tính toán (tính phí vận chuyển, tổng tiền thanh toán, số liệu thống kê) và Thống kê (sản phẩm bán chạy, sản phẩm không bán chạy, lượt xem, khách hàng tương tác thường xuyên, dữ liệu Google Analytics).
  • Yêu cầu phi chức năng: Đảm bảo tính tiện dụng (giao diện hài hòa, tìm kiếm đơn giản), tính hiệu quả (xử lý nhanh, thông báo lỗi rõ ràng), tính tương thích (hoạt động tốt trên máy tính và điện thoại thông minh), tính tiến hóa (khả năng mở rộng tích hợp trí tuệ nhân tạo, điểm tích lũy), tính dễ bảo trì và tính tái sử dụng cao.
  • Phân quyền người dùng: Xác định rõ quyền hạn và nhiệm vụ của 3 tác nhân (Actor):
    1. Guest (Khách vãng lai): Gồm 8 chức năng (Đăng nhập, Đăng ký, Quên mật khẩu, Xem trang chủ, Xem trang liên hệ, Xem danh mục sản phẩm, Xem chi tiết sản phẩm, Tìm kiếm sản phẩm).
    2. User (Khách hàng thành viên): Kế thừa 8 chức năng của Guest và bổ sung 16 chức năng chuyên biệt (Quản lý thông tin cá nhân, Đổi mật khẩu, Thêm/xóa sản phẩm yêu thích, Xem danh sách yêu thích, Xem danh sách đơn hàng, Hủy đơn hàng, Thêm/xóa sản phẩm trong giỏ hàng, Xác nhận và thanh toán trực tuyến qua 4 bước, Xem tin nhắn, Chat với Admin, Bình luận sản phẩm, Đánh giá số sao, Đăng xuất).
    3. Admin (Quản trị viên): Gồm 26 chức năng quản lý toàn diện (Xem danh sách, thêm, sửa, xóa logic, khôi phục, tìm kiếm, lọc user; Xem, thêm, sửa, xóa, tìm kiếm danh mục sản phẩm; Thêm sự kiện giảm giá cho danh mục; Xem, thêm, sửa, xóa, tìm kiếm sản phẩm; Xem danh sách, xem chi tiết, cập nhật trạng thái, xóa đơn hàng; Quản lý gửi tin nhắn thông báo; Chat trực tiếp với khách hàng; Xem bảng thống kê Dashboard).
  • Mô hình hóa hệ thống: Trình bày biểu đồ Use case tổng thể, các Use case chi tiết và 13 biểu đồ tuần tự (Sequence Diagram) mô tả chi tiết dòng thông điệp tương tác giữa Client, Server và Database cho các nghiệp vụ chính.

Chương 4: Thiết kế phần mềm

Nội dung chương 4 tập trung vào việc hiện thực hóa các mô hình phân tích thành thiết kế kỹ thuật cụ thể:

  • Thiết kế hệ thống: Xây dựng cấu trúc tương tác giữa các tầng ứng dụng dựa trên RESTful API và kiến trúc MERN.
  • Thiết kế cơ sở dữ liệu: Xây dựng lược đồ quan hệ và bảng mô tả dữ liệu chi tiết cho 7 collection (users, products, productcategories, orders, messages, statistics, chats). Mỗi collection đều được đặc tả chi tiết về tên trường, kiểu dữ liệu, ràng buộc và ý nghĩa lưu trữ.
  • Thiết kế giao diện: Chi tiết hóa giao diện và đặc tả sự kiện xử lý cho hàng loạt màn hình chức năng: Màn hình Đăng nhập (hỗ trợ nhập email/số điện thoại hoặc đăng nhập nhanh qua Google/Facebook); Đăng ký và Quên mật khẩu; Màn hình Trang chủ, Danh mục sản phẩm, Chi tiết sản phẩm (cho phép xem thông số, chọn kích cỡ, màu sắc, đánh giá); Giỏ hàng và quy trình Thanh toán 4 bước; Màn hình Lịch sử đơn hàng và Quản lý danh sách yêu thích; Hệ thống màn hình quản trị Admin gồm Dashboard thống kê biểu đồ, Quản lý người dùng, Quản lý sản phẩm, Quản lý danh mục, Quản lý đơn hàng, Quản lý thông báo và giao diện Chat hỗ trợ trực tuyến.

Chương 5: Cài đặt và kiểm thử phần mềm

Chương này trình bày quá trình hiện thực hóa giải pháp và kiểm chứng chất lượng phần mềm:

  • Chuẩn bị môi trường và cài đặt: Cấu hình môi trường vận hành gồm NodeJS, hệ quản trị MongoDB, các công cụ biên dịch giao diện và các thư viện điều khiển đi kèm.
  • Kế hoạch và chiến lược kiểm thử: Xác định phương pháp kiểm thử chức năng theo các kịch bản thực tế nhằm đảm bảo tính toàn vẹn dữ liệu, khả năng bắt lỗi giao diện và tính chính xác của các luồng xử lý nghiệp vụ.
  • Thiết kế ca kiểm thử (Test cases): Văn bản xây dựng các bảng kịch bản kiểm thử chi tiết bao gồm điều kiện tiên quyết, dữ liệu đầu vào, các bước thực hiện và kết quả mong đợi cho 8 phân hệ chính:
    1. Ca kiểm thử màn hình Đăng nhập (kiểm tra trường hợp để trống, sai định dạng email, mật khẩu không đúng, đăng nhập thành công).
    2. Ca kiểm thử màn hình Quên mật khẩu (kiểm tra nhập email hợp lệ, kiểm tra mã xác nhận).
    3. Ca kiểm thử màn hình Trang chủ người dùng.
    4. Ca kiểm thử màn hình Chi tiết sản phẩm.
    5. Ca kiểm thử màn hình Danh mục sản phẩm.
    6. Ca kiểm thử màn hình Lịch sử đơn hàng (kiểm tra lọc đơn hàng, hủy đơn hàng trong thời hạn).
    7. Ca kiểm thử màn hình Thanh toán trực tuyến (kiểm tra các bước nhập thông tin, lựa chọn phương thức thanh toán).
    8. Ca kiểm thử màn hình Thống kê Dashboard (kiểm tra dữ liệu số liệu hiển thị, biểu đồ thống kê đơn hàng và lượt xem theo thời gian).

Kết quả và đóng góp

Kết quả chính của khóa luận:

  • Xây dựng thành công website bán giày trực tuyến ứng dụng trọn vẹn bộ công nghệ MERN Stack (MongoDB, ExpressJS, ReactJS, NodeJS).
  • Hoàn thiện hệ thống phân quyền với đầy đủ chức năng theo 3 nhóm tác nhân: 8 chức năng cho Guest, 24 chức năng cho User và 26 chức năng cho Admin.
  • Tích hợp thành công các tiện ích hiện đại trên nền tảng thương mại điện tử:
    • Đăng nhập đa kênh: Đăng nhập trực tiếp bằng tài khoản hệ thống hoặc thông qua liên kết ủy quyền với tài khoản Facebook và Google.
    • Quy trình đặt hàng và thanh toán: Xây dựng quy trình thanh toán 4 bước rõ ràng, hỗ trợ các hình thức thanh toán trực tuyến không dùng tiền mặt.
    • Tương tác trực tuyến: Xây dựng kênh trao đổi trực tiếp (chat) thời gian thực giữa khách hàng và quản trị viên; hệ thống đánh giá số sao và bình luận sản phẩm.
    • Quản trị và phân tích: Tích hợp công cụ Google Analytics vào trang quản trị để theo dõi hành vi người dùng, biểu đồ trực quan hóa dữ liệu bán hàng và lượt tương tác sản phẩm.
  • Xây dựng hệ thống tài liệu thiết kế phần mềm chi tiết gồm 15 lược đồ Use case, 13 lược đồ Sequence Diagram, 35 bảng đặc tả luồng xử lý, cấu trúc 7 collection dữ liệu và 8 bảng test case chức năng.

Đóng góp của đề tài:

  • Minh chứng tính khả thi và hiệu quả của việc ứng dụng full-stack JavaScript (MERN Stack) trong việc xây dựng ứng dụng web thương mại điện tử có tính tương tác cao (SPA), tốc độ xử lý nhanh nhờ cơ chế non-blocking I/O và Virtual DOM.
  • Đóng góp một thiết kế mẫu hoàn chỉnh về quy trình phân tích, thiết kế hệ thống và kiểm thử phần mềm cho bài toán kinh doanh bán lẻ giày dép trực tuyến, có thể làm tài liệu tham khảo cho các dự án phát triển phần mềm thương mại tương tự.

Hạn chế và hướng nghiên cứu tiếp

Hạn chế được đề cập trong văn bản:

  • Về công nghệ: NodeJS và mô hình hướng sự kiện là công nghệ tương đối mới ở thời điểm nghiên cứu, đòi hỏi người phát triển phải nắm vững kiến trúc xử lý bất đồng bộ; công nghệ này thường phù hợp với các đơn vị khởi nghiệp hoặc dự án vừa và nhỏ, đối với các hệ thống quy mô lớn của các doanh nghiệp phức tạp thì việc sử dụng NodeJS còn gặp những rào cản nhất định.
  • Về chức năng: Hệ thống mới đáp ứng các nghiệp vụ bán lẻ cơ bản; tính năng gợi ý sản phẩm và chăm sóc khách hàng còn mang tính thụ động, chưa có khả năng tự động hóa cao dựa trên phân tích dữ liệu chuyên sâu.

Hướng phát triển tiếp theo của đề tài:

  • Tích hợp trí tuệ nhân tạo (AI) vào hệ thống nhằm phân tích sâu hành vi mua sắm, từ đó tự động đề xuất các sản phẩm phù hợp với sở thích của từng khách hàng.
  • Xây dựng mô hình tích lũy điểm thưởng cho khách hàng thân thiết để gia tăng sự gắn kết và thu hút người dùng quay lại mua sắm.
  • Nâng cấp và mở rộng hệ thống để có khả năng phát triển thành nền tảng thương mại điện tử đa ngành hàng quy mô lớn tương tự như các sàn thương mại điện tử Shopee, Lazada hay Tiki.

Giá trị tham khảo

Báo cáo khóa luận tốt nghiệp này có giá trị tham khảo thiết thực cho:

  • Sinh viên ngành Công nghệ Thông tin, chuyên ngành Công nghệ Phần mềm: Tài liệu minh họa cụ thể cho quy trình phát triển một đồ án tốt nghiệp kỹ sư từ khâu khảo sát hiện trạng, phân tích yêu cầu, thiết kế kiến trúc đến kiểm thử hệ thống.
  • Lập trình viên đang tìm hiểu về MERN Stack: Cung cấp tài liệu tham khảo về cách kết nối và vận hành đồng bộ giữa 4 công nghệ MongoDB, ExpressJS, ReactJS và NodeJS, cách sử dụng Redux quản lý state và Mongoose ODM quản lý cơ sở dữ liệu.
  • Người thực hiện đề tài website thương mại điện tử: Phần phân tích yêu cầu chi tiết (35 bảng đặc tả luồng xử lý use case) và thiết kế hệ thống giao diện, cơ sở dữ liệu bán hàng (sản phẩm, giỏ hàng, thanh toán 4 bước, đơn hàng, chat trực tuyến) có thể tái sử dụng trực tiếp cho các bài toán kinh doanh trực tuyến khác.

Câu hỏi thường gặp

1. Khóa luận tiến hành khảo sát những website bán hàng cụ thể nào và rút ra kết luận gì?
Khóa luận đã khảo sát thực tế 4 website: bitis.vn, vinagiay.vn, buywholesalefootwear.com và addidas.com. Qua phân tích ưu và nhược điểm của từng trang, tác giả rút ra kết luận: Các website hiện hữu dù đáp ứng được chức năng cơ bản nhưng bố cục còn đơn điệu, một số trang thiếu menu điều hướng tiện lợi, hạn chế hình thức đăng ký và thanh toán; do đó cần xây dựng website bán hàng có giao diện chuyên nghiệp, minh bạch thông tin, điều hướng rõ ràng và hỗ trợ đăng nhập, thanh toán linh hoạt.

2. Vai trò của từng thành phần trong MERN Stack được áp dụng trong đồ án như thế nào?
Trong hệ thống, MongoDB đóng vai trò là cơ sở dữ liệu NoSQL lưu trữ dữ liệu dưới dạng tài liệu JSON/BSON và kết nối qua Mongoose ODM; ExpressJS là web framework cung cấp hệ thống định tuyến và xây dựng các dịch vụ RESTful API; ReactJS đóng vai trò Front-end framework xây dựng giao diện ứng dụng trang đơn (SPA) với cú pháp JSX, Virtual DOM và Redux; NodeJS đóng vai trò máy chủ thực thi JavaScript phía Server-side với kiến trúc đơn luồng và non-blocking I/O.

3. Hệ thống phân chia quyền hạn cho những tác nhân nào và số lượng chức năng cụ thể là bao nhiêu?
Hệ thống phân chia thành 3 tác nhân (Actor) rõ rệt: Khách vãng lai (Guest) sở hữu 8 chức năng; Khách hàng thành viên (User) sở hữu 24 chức năng (bao gồm 8 chức năng của Guest và 16 chức năng tài khoản, giỏ hàng, thanh toán, đánh giá, chat); Quản trị viên (Admin) sở hữu 26 chức năng quản lý toàn diện người dùng, sản phẩm, danh mục, sự kiện khuyến mãi, đơn hàng, tin nhắn và thống kê.

4. Cơ sở dữ liệu của website gồm những collection nào trong MongoDB?
Cơ sở dữ liệu được thiết kế thành 7 collection chính, bao gồm: users (dữ liệu người dùng), products (dữ liệu sản phẩm), productcategories (danh mục sản phẩm), orders (dữ liệu đơn hàng), messages (tin nhắn thông báo), statistics (dữ liệu thống kê) và chats (dữ liệu trao đổi trực tuyến).

5. Quy trình đặt hàng và thanh toán trên website được thiết kế qua những bước nào?
Quy trình thanh toán trên website được chuẩn hóa qua 4 bước: (1) Xác nhận sản phẩm (điều chỉnh số lượng, kích cỡ, màu sắc); (2) Nhập thông tin giao hàng (họ tên, email, số điện thoại, địa chỉ nhận hàng); (3) Xác nhận đơn hàng (thông qua mã gửi về email hoặc tin nhắn SMS); (4) Hoàn tất đơn hàng và lựa chọn phương thức thanh toán trực tuyến qua các cổng được tích hợp.


Kết luận

Khóa luận tốt nghiệp "Ứng dụng MERN Stack xây dựng website bán giày" của sinh viên Nguyễn Thanh Giàu và Trần Văn Luyện đã hoàn thành đầy đủ mục tiêu nghiên cứu và hiện thực hóa một ứng dụng thương mại điện tử hoàn chỉnh dựa trên nền tảng JavaScript toàn diện. Đề tài xây dựng chi tiết từ khâu khảo sát hiện trạng, mô hình hóa hệ thống ca sử dụng, thiết kế cấu trúc dữ liệu NoSQL cho đến triển khai giao diện SPA và kiểm thử chức năng. Sản phẩm đáp ứng tốt các yêu cầu mua sắm đa tiện ích cho khách hàng và cung cấp bộ công cụ quản lý trực quan cho quản trị viên. Hướng phát triển tiếp theo của đề tài tập trung vào việc ứng dụng trí tuệ nhân tạo để cá nhân hóa đề xuất sản phẩm và tích hợp cơ chế điểm thưởng nhằm mở rộng quy mô hệ thống.