Bối cảnh và vấn đề nghiên cứu
Trong bối cảnh kinh tế - xã hội tại Thành phố Hồ Chí Minh nói riêng và Việt Nam nói chung ngày càng phát triển, sự gia tăng nhanh chóng về quy mô và số lượng của các doanh nghiệp, công sở đã kéo theo sự gia tăng của lực lượng nhân viên văn phòng. Nhịp sống bận rộn khiến quỹ thời gian dành cho công việc nội trợ, nấu nướng của cá nhân bị thu hẹp đáng kể, từ đó thúc đẩy nhu cầu sử dụng các dịch vụ đặt và giao đồ ăn nhanh trực tuyến. Nhận thấy tiềm năng phát triển và khả năng ứng dụng thực tế của mô hình này, đề tài "Xây dựng hệ thống giao đồ ăn nhanh" được thực hiện bởi nhóm sinh viên Huỳnh Công Chiến (MSSV: 16110282) và Trần Khương Duy (MSSV: 16110297) dưới sự hướng dẫn của ThS. Nguyễn Trần Thi Văn tại 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 2016 – 2020).
Mục tiêu chính của đề tài là phân tích, thiết kế và xây dựng hoàn chỉnh một hệ thống giao đồ ăn nhanh đa nền tảng, bao gồm ứng dụng di động và website quản trị, đáp ứng 6 nhóm nhiệm vụ chức năng cơ bản sau:
- Quản lý món ăn (thêm, sửa, xóa, hiển thị danh mục và thực đơn).
- Quản lý giỏ hàng (thêm món, bớt món, cập nhật số lượng và tính toán chi phí).
- Quản lý cửa hàng (thông tin đối tác, thực đơn, tiếp nhận đơn đặt hàng).
- Quản lý người dùng (thông tin cá nhân, phân quyền tài khoản, lịch sử đơn hàng).
- Quản lý người giao hàng (tiếp nhận đơn hàng, cập nhật lộ trình và trạng thái giao nhận).
- Đăng ký và xác thực tài khoản hệ thống.
Đối tượng và phạm vi nghiên cứu của khóa luận được xác định cụ thể:
- Đối tượng nghiên cứu: Hệ thống giao đồ ăn nhanh phục vụ người dùng ở mọi độ tuổi, mọi khu vực địa lý có nhu cầu đặt và giao nhận thức ăn.
- Phạm vi nghiên cứu:
- Nghiên cứu tối ưu hóa trải nghiệm người dùng (UI/UX) trên cả giao diện Web và ứng dụng di động Android.
- Ứng dụng công nghệ thư viện ReactJS cho phía Web Client.
- Sử dụng hệ sinh thái Firebase (bao gồm Firebase Realtime Database, Cloud Firestore, Firebase Authentication, Firebase Storage, Firebase Hosting) cho tầng dữ liệu và lưu trữ đám mây.
- Áp dụng kiến trúc quản lý trạng thái Redux.
- Thời gian thực hiện: 15 tuần (từ ngày 30/03/2020 đến ngày 12/07/2020).
Cơ sở lý thuyết và phương pháp
Khóa luận xây dựng nền tảng kỹ thuật dựa trên các ngôn ngữ lập trình và công nghệ web/di động tiêu chuẩn:
- Ngôn ngữ lập trình: Java (phát triển ứng dụng Android trên nền tảng máy ảo với cơ chế phân luồng đa nhiệm, thu gom rác tự động Garbage Collection), JavaScript (ngôn ngữ kịch bản bậc cao, hướng đối tượng theo nguyên mẫu Prototype-based), cùng các chuẩn HTML và CSS định kiểu giao diện web.
- Thư viện và Framework:
- ReactJS: Thư viện JavaScript xây dựng giao diện Single Page Application (SPA), tích hợp cú pháp mở rộng JSX giúp nhúng mã HTML trong JavaScript, quản lý luồng dữ liệu thông qua cơ chế phân tách Component, Props (thuộc tính bất biến truyền từ cha sang con) và State (trạng thái nội tại kích hoạt quá trình render lại DOM).
- Redux: Kiến trúc quản lý trạng thái tập trung hoạt động dựa trên 3 nguyên tắc bất biến: Single Source of Truth (Store là nguồn dữ liệu tin cậy duy nhất), State Read-only (State chỉ được phép đọc, thay đổi duy nhất qua việc phát sinh Action), và Reducer Pure Functions (hàm nhận vào State cũ cùng Action để trả về State mới hoàn chỉnh).
- Hệ quản trị cơ sở dữ liệu và Dịch vụ Cloud:
- Firebase (Google): Nền tảng cơ sở dữ liệu NoSQL lưu trữ dữ liệu dưới định dạng cây JSON, hỗ trợ cơ chế đồng bộ dữ liệu thời gian thực (Realtime Database), tự động mở rộng quy mô, mã hóa kết nối qua giao thức bảo mật SSL 2048-bit, hỗ trợ lưu trữ cục bộ khi thiết bị ngoại tuyến (offline persistence).
- Firebase Authentication, Firebase Storage, Firebase Hosting: Cung cấp giải pháp xác thực bảo mật tài khoản, lưu trữ tệp tin đa phương tiện và lưu trữ ứng dụng tĩnh trên mạng lưới CDN toàn cầu.
- Hệ điều hành di động: Nền tảng Android mã nguồn mở (giấy phép Apache, nhân Linux), tận dụng kho ứng dụng Google Play Store và cơ chế quản lý đa nhiệm để vận hành ứng dụng phía người giao hàng và người dùng.
Phương pháp nghiên cứu được triển khai bao gồm:
- Phương pháp tổng hợp lý thuyết: Phân tích, tổng hợp tài liệu chuyên khảo về ReactJS, Redux, Firebase và Android SDK.
- Phương pháp chuyên gia: Tham vấn trực tiếp ý kiến chuyên môn của giảng viên hướng dẫn và các kỹ sư phát triển phần mềm có kinh nghiệm.
- Phương pháp mô hình hóa: Phân tích yêu cầu hệ thống qua sơ đồ ca sử dụng (Use Case), thiết kế cấu trúc dữ liệu NoSQL, xây dựng sơ đồ tương tác tuần tự (Sequence Diagram) và hiện thực hóa qua các nguyên mẫu giao diện (Prototype).
- Nguồn dữ liệu: Dữ liệu khảo sát thực tế thu thập từ 5 hệ thống giao đồ ăn trực tuyến đang vận hành tại thị trường Việt Nam năm 2020 (Vietnammm, GO-Food, GrabFood, Now.vn, BAEMIN).
Thiết kế và triển khai hệ thống
Hệ thống được thiết kế theo mô hình kiến trúc phân tán dựa trên dịch vụ đám mây Firebase, phân quyền chặt chẽ cho 5 nhóm tác nhân (Actors): Khách vãng lai (Guest), Người dùng đã đăng ký (User), Chủ nhà hàng/cửa hàng (Restaurant), Người giao hàng (Shipper) và Quản trị viên hệ thống (Admin).
+-------------------------------------------------------------------------+
| KIẾN TRÚC HỆ THỐNG |
+-------------------------------------------------------------------------+
| [ Client Web (ReactJS + Redux) ] [ Mobile Client (Android App) ] |
| - Dành cho Quản trị viên & Khách - Dành cho Khách hàng & Shipper |
+------------------------------------+------------------------------------+
| (API / SDK)
+------------------------------------v------------------------------------+
| NỀN TẢNG CLOUD FIREBASE |
| - Firebase Authentication: Xác thực người dùng (Email/Mật khẩu) |
| - Realtime Database: Đồng bộ trạng thái đơn hàng thời gian thực |
| - Firebase Storage: Lưu trữ hình ảnh món ăn, logo nhà hàng |
| - Security Rules: Phân quyền truy xuất dữ liệu theo Token |
+-------------------------------------------------------------------------+
Thiết kế cơ sở dữ liệu (Firebase NoSQL)
Cơ sở dữ liệu được tổ chức thành 4 cấu trúc bảng (JSON collections) chính:
- Users: Lưu trữ thông tin tài khoản, tên người dùng, số điện thoại, địa chỉ, quyền hạn (Role: Admin, User, Restaurant, Shipper).
- Restaurants: Lưu trữ mã định danh cửa hàng, tên quán, địa chỉ tọa độ, số điện thoại, danh mục món ăn và đánh giá.
- Menu: Lưu trữ mã món ăn, mã cửa hàng liên kết, tên món, đơn giá, hình ảnh mô tả thực tế, trạng thái còn món/hết món.
- Orders: Lưu trữ thông tin đơn hàng, mã khách hàng, mã nhà hàng, mã shipper tiếp nhận, danh sách món ăn đã đặt, tổng tiền, thời gian tạo đơn và trạng thái xử lý đơn (Chờ xác nhận, Đang chuẩn bị, Đang giao, Hoàn thành, Đã hủy).
Quy trình xử lý nghiệp vụ chính
Khóa luận đã mô hình hóa luồng xử lý thông qua các sơ đồ tuần tự (Sequence Diagram):
- Quy trình Đăng ký tài khoản: Kiểm tra tính hợp lệ của dữ liệu đầu vào -> Gọi API Firebase Authentication để khởi tạo tài khoản -> Ghi nhận thông tin bổ sung vào bảng
Users.
- Quy trình Đặt hàng: Khách hàng chọn món -> Cập nhật trạng thái giỏ hàng (Redux Store) -> Điền địa chỉ giao nhận -> Tạo bản ghi mới trong bảng
Orders trên Firebase -> Kích hoạt thông báo thời gian thực đến cửa hàng liên kết.
- Quy trình Xử lý và Cập nhật trạng thái đơn hàng: Cửa hàng nhận đơn -> Cập nhật trạng thái sang "Đang chuẩn bị" -> Shipper quét danh sách đơn hàng cần giao -> Nhận đơn và cập nhật trạng thái "Đang giao hàng" -> Hoàn tất đơn và cập nhật trạng thái "Đã giao thành công".
Nội dung chính theo từng chương
Chương 1: Cơ sở lý thuyết
Chương này tập trung trình bày tổng quan lý thuyết về các ngôn ngữ và công nghệ được sử dụng trong toàn bộ dự án. Tác giả đi sâu vào các đặc tính cốt lõi của ngôn ngữ Java (tính hướng đối tượng, biên dịch sang mã Bytecode thực thi trên JVM, cơ chế đa luồng, bảo mật thông qua máy ảo) và JavaScript (bản chất ngôn ngữ kịch bản, cơ chế Single-Thread Event Loop, mô hình lập trình bất đồng bộ).
Về mặt công nghệ, chương 1 phân tích chi tiết cơ chế hoạt động của ReactJS với mô hình Virtual DOM giúp tối ưu hóa hiệu năng cập nhật giao diện, cú pháp JSX, vòng đời của Component, cùng sự phối hợp giữa Props và State. Tiếp đó, kiến trúc Redux được mổ xẻ thông qua sơ đồ luồng dữ liệu một chiều (Unidirectional Data Flow) với các thành phần Store, Action, Dispatcher và Reducer. Cuối cùng, chương này giới thiệu toàn diện hệ sinh thái Firebase (Realtime Database, Authentication, Hosting, Storage) cùng các ưu điểm nổi bật của hệ điều hành Android (khả năng tùy biến cao nhờ mã nguồn mở, hỗ trợ đa nhiệm, kho ứng dụng phong phú).
Chương 2: Khảo sát hiện trạng và xác định yêu cầu
Tác giả tiến hành phân tích, đối sánh 5 ứng dụng giao đồ ăn trực tuyến phổ biến trên thị trường tại thời điểm nghiên cứu nhằm tìm ra các ưu điểm cần kế thừa và hạn chế cần khắc phục:
| Hệ thống khảo sát |
Nền tảng |
Ưu điểm ghi nhận |
Nhược điểm chính |
| Vietnammm |
Web, App di động |
Giao diện rõ ràng, phân loại món đa dạng, hiển thị vị trí nhà hàng trên bản đồ. |
Hình ảnh món ăn chưa chân thật; một số trang bị lỗi không tải được ảnh. |
| GO-Food |
App di động |
Trải nghiệm người dùng tốt, theo dõi vị trí tài xế theo thời gian thực chính xác, công cụ tìm kiếm linh hoạt. |
Hình ảnh món ăn thiếu tính thực tế; nhiều món ăn không có hình minh họa. |
| GrabFood |
App di động |
Giao diện trực quan, tích hợp ví điện tử Moca, cho phép sửa địa chỉ giao hàng, bộ lọc món phong phú (vị trí gần nhất, món đặt nhiều). |
Dữ liệu quán hạn chế (chủ yếu là quán có ký kết chiết khấu); hình ảnh món ăn chưa sát thực tế. |
| Now.vn |
Web, App di động |
Dữ liệu quán lớn nhất (gần 37.000 quán tại TP.HCM và 15 tỉnh thành), hỗ trợ ghi chú/topping chi tiết, nhiều hình thức thanh toán. |
Thời gian xác nhận đơn còn chậm; tính năng theo dõi vị trí tài xế bị trễ và sai lệch so với thời gian thực. |
| BAEMIN |
App di động |
Giao diện thân thiện, biểu tượng dễ thương, gợi ý món theo tâm trạng, định vị tài xế chuẩn xác theo thời gian thực. |
Cơ sở dữ liệu quán đối tác chưa nhiều; số lượng hình ảnh minh họa món ăn còn ít. |
Từ kết quả khảo sát, đề tài xác định định hướng thiết kế tập trung vào giao diện đơn giản, bắt buộc chuẩn hóa hình ảnh minh họa thực tế cho từng món ăn, và yêu cầu đối tác cập nhật đầy đủ thông tin định danh. Chương này cũng phân định rõ ràng các yêu cầu chức năng (cho Người mua, Chủ quán, Shipper) và yêu cầu phi chức năng (tốc độ tìm kiếm, tính bảo mật dữ liệu qua SSL, khả năng tái sử dụng mô-đun và tính ổn định khi mở rộng).
Chương 3: Mô hình hóa yêu cầu
Chương 3 trình bày chi tiết sơ đồ lược đồ Use Case tổng thể và 19 bản đặc tả chi tiết Use Case kèm hình ảnh nguyên mẫu giao diện (Prototype), bao gồm:
- Nhóm Use Case người dùng/khách: Đăng ký tài khoản (Bảng 1), Xem danh sách món ăn (Bảng 2), Tìm kiếm món ăn (Bảng 3), Xem lịch sử đơn hàng (Bảng 4), Xóa đơn hàng (Bảng 5), Thay đổi thông tin cá nhân (Bảng 6), Đặt hàng (Bảng 7), Đăng nhập (Bảng 17), Đăng xuất (Bảng 18), Chọn món ăn (Bảng 19).
- Nhóm Use Case nhà hàng: Xem danh sách đơn đặt hàng của khách (Bảng 8), Xem danh sách thực đơn (Bảng 9), Thêm món ăn (Bảng 10), Xóa món ăn (Bảng 11), Sửa món ăn (Bảng 12).
- Nhóm Use Case quản trị và giao hàng: Xem danh sách tài khoản (Bảng 13), Xóa tài khoản (Bảng 14), Xem đơn hàng cần giao dành cho Shipper (Bảng 15), Cập nhật trạng thái đơn hàng (Bảng 16).
Mỗi đặc tả Use Case đều quy định rõ ràng: Tên Use Case, Mô tả, Tác nhân kích hoạt (Guest, User, Restaurant, Shipper, Admin), Tiền điều kiện và Chuỗi các bước thực hiện tuần tự.
Chương 4: Thiết kế phần mềm
Nội dung chương 4 tập trung vào 3 khía cạnh thiết kế kỹ thuật:
- Thiết kế cơ sở dữ liệu: Xây dựng lược đồ quan hệ và mô tả chi tiết các thuộc tính kiểu dữ liệu trong 4 bảng Firebase: Bảng
Users (Bảng 20), Bảng orders (Bảng 21), Bảng restaurants (Bảng 22), Bảng menu (Bảng 23).
- Thiết kế giao diện và xử lý: Trình bày chi tiết bố cục màn hình và danh sách xử lý tương ứng cho từng phân hệ (Đăng ký, Đăng nhập, Tìm kiếm món ăn, Đặt hàng, Quản lý giỏ hàng, Quản lý thực đơn nhà hàng, Quản lý tài khoản, Xem lịch sử đơn hàng, Đăng nhập và Danh sách đơn hàng cho Shipper - từ Bảng 24 đến Bảng 49).
- Thiết kế xử lý logic: Xây dựng 5 lược đồ tuần tự (Sequence Diagram) thể hiện tương tác giữa Giao diện (Boundary/View), Bộ điều khiển (Controller/Redux Actions) và Tầng dữ liệu (Firebase Database) cho các nghiệp vụ: Đăng ký, Đặt hàng, Thêm sản phẩm, Xóa cửa hàng, Cập nhật trạng thái đơn hàng.
Chương 5: Cài đặt và kiểm thử ứng dụng
Chương 5 mô tả quá trình đóng gói, cài đặt hệ thống trên môi trường máy chủ web và thiết bị di động Android. Tác giả đã tiến hành kiểm thử chức năng ứng dụng (Functionality Testing) thông qua bảng kịch bản kiểm thử chi tiết (Bảng 50: Kiểm thử ứng dụng) với đầy đủ các trường hợp kiểm thử cho từng chức năng đã thiết kế, đảm bảo các luồng xử lý dữ liệu đầu vào - đầu ra diễn ra chính xác theo đúng đặc tả yêu cầu ban đầu.
Kết quả và đóng góp
Kết quả đạt được
Khóa luận đã hoàn thành các mục tiêu đề ra theo đúng tiến độ 15 tuần nghiên cứu:
- Xây dựng thành công hệ thống phần mềm giao đồ ăn nhanh hoàn chỉnh, kết nối đồng bộ giữa nền tảng Web quản trị (ReactJS, Redux) và ứng dụng di động phía người dùng/shipper (Android, Java).
- Thiết lập cơ sở dữ liệu đám mây trên Firebase NoSQL với 4 bảng dữ liệu cốt lõi (
Users, Restaurants, Menu, Orders), đảm bảo khả năng đồng bộ dữ liệu thời gian thực giữa khách hàng, nhà hàng và người giao hàng.
- Hiện thực hóa đầy đủ 19 Use Case chức năng theo thiết kế, bao gồm xác thực tài khoản, tìm kiếm quán ăn theo vị trí địa lý, quản lý giỏ hàng, đặt hàng trực tuyến, điều phối trạng thái đơn hàng và quản lý tài khoản người dùng.
- Thực hiện kiểm thử toàn diện hệ thống thông qua bộ kịch bản kiểm thử (Bảng 50), xác nhận các chức năng hoạt động ổn định và đáp ứng các tiêu chuẩn kỹ thuật đề ra.
Giải pháp kỹ thuật và đóng góp
- Đề xuất mô hình dữ liệu NoSQL tối ưu trên Firebase: Tận dụng cơ chế Realtime Database và tính năng lưu trữ ngoại tuyến (Offline persistence) của Firebase giúp ứng dụng duy trì khả năng tương tác ngay cả khi đường truyền internet gặp sự cố, tự động đồng bộ khi có kết nối trở lại.
- Áp dụng kiến trúc Redux: Quản lý trạng thái luồng dữ liệu ứng dụng tập trung, loại bỏ tình trạng phân mảnh trạng thái khi truyền dữ liệu qua nhiều cấp component trong ReactJS.
- Chuẩn hóa quy trình hiển thị thực đơn: Đưa ra giải pháp bắt buộc cập nhật đầy đủ hình ảnh thực tế và mô tả chi tiết món ăn, giải quyết nhược điểm hình ảnh thiếu chân thật và thiếu minh họa vốn tồn tại ở các hệ thống lớn đã khảo sát (Vietnammm, GO-Food, GrabFood, BAEMIN).
Hạn chế và hướng nghiên cứu tiếp
Hạn chế
- Phụ thuộc hạ tầng đám mây của bên thứ ba: Hệ thống phụ thuộc lớn vào nền tảng Google Firebase; chính sách giới hạn băng thông hoặc dung lượng miễn phí có thể phát sinh chi phí khi quy mô kết nối tăng cao.
- Tính năng định vị và bản đồ nâng cao: Cơ chế theo dõi lộ trình di chuyển của Shipper và tính toán khoảng cách tự động chưa tích hợp sâu các thuật toán tối ưu hóa đường đi đa điểm.
- Phạm vi phương thức thanh toán: Hệ thống chủ yếu tập trung vào luồng nghiệp vụ xử lý đơn hàng cơ bản, chưa tích hợp đa dạng các cổng thanh toán ví điện tử trực tuyến (như MoMo, ZaloPay, Moca).
Hướng nghiên cứu tiếp
- Tích hợp thêm các cổng thanh toán trực tuyến trong nước và quốc tế để đa dạng hóa phương thức thanh toán cho khách hàng.
- Nâng cấp hệ thống định vị thời gian thực, tích hợp thuật toán định tuyến thông minh giúp tối ưu hóa quãng đường di chuyển và thời gian giao hàng của Shipper.
- Phát triển thêm các phân hệ phân tích dữ liệu kinh doanh, báo cáo doanh thu chi tiết theo thời gian thực cho chủ nhà hàng.
- Bổ sung hệ thống đánh giá, phản hồi đa tiêu chí từ người dùng nhằm nâng cao chất lượng dịch vụ của đối tác cửa hàng.
Giá trị tham khảo
Đồ án là tài liệu tham khảo có giá trị kỹ thuật và thực tiễn đối với:
- Sinh viên chuyên ngành Công nghệ thông tin, Công nghệ phần mềm: Cung cấp tài liệu tham khảo bài bản về quy trình phân tích thiết kế hệ thống phần mềm hoàn chỉnh từ khâu khảo sát hiện trạng, mô hình hóa Use Case, thiết kế lược đồ tuần tự cho đến cài đặt và kiểm thử.
- Người phát triển ứng dụng Fullstack (Web & Di động): Cung cấp mô hình kiến trúc mẫu trong việc kết hợp ReactJS, Redux ở tầng Front-end và Firebase NoSQL ở tầng Back-end/Cơ sở dữ liệu thời gian thực.
- Các đề tài nghiên cứu thương mại điện tử và dịch vụ giao vận (O2O - Online to Offline): Cung cấp tài liệu tham khảo giá trị về phân tích đối sánh hiện trạng các ứng dụng giao đồ ăn thực tế tại thị trường Việt Nam và thiết kế cấu trúc dữ liệu đơn hàng phân tán.
Câu hỏi thường gặp
1. Khóa luận do ai thực hiện, thuộc đơn vị nào và được thực hiện trong khoảng thời gian nào?
Khóa luận được thực hiện bởi hai sinh viên Huỳnh Công Chiến (MSSV: 16110282) và Trần Khương Duy (MSSV: 16110297), dưới sự hướng dẫn của ThS. Nguyễn Trần Thi Văn 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. Thời gian thực hiện đồ án kéo dài 15 tuần, từ ngày 30/03/2020 đến ngày 12/07/2020.
2. Hệ thống giao đồ ăn nhanh này được thiết kế cho những nhóm tác nhân nào sử dụng?
Hệ thống xác định và phân quyền chi tiết cho 5 nhóm tác nhân (Actors) chính:
Guest: Khách vãng lai chưa đăng ký tài khoản, có thể tìm kiếm và xem danh sách món ăn.
User: Khách hàng đã đăng ký/đăng nhập, có quyền đặt hàng, quản lý giỏ hàng, xem lịch sử và xóa đơn hàng.
Restaurant: Chủ cửa hàng/nhà hàng, quản lý thực đơn (thêm/sửa/xóa món ăn) và tiếp nhận đơn đặt hàng của khách.
Shipper: Người giao hàng, xem danh sách đơn hàng cần giao và cập nhật trạng thái vận chuyển.
Admin: Người quản trị hệ thống, quản lý và phân quyền danh sách tài khoản người dùng.
3. Khóa luận đã tiến hành khảo sát thực tế những ứng dụng giao đồ ăn nào tại Việt Nam?
Tác giả đã tiến hành khảo sát, phân tích ưu và nhược điểm của 5 ứng dụng/website giao đồ ăn trực tuyến đang hoạt động tại Việt Nam: Vietnammm, GO-Food, GrabFood, Now.vn (ghi nhận dữ liệu gần 37.000 quán ăn tại TP.HCM và 15 tỉnh thành) và BAEMIN.
4. Cấu trúc cơ sở dữ liệu Firebase trong đồ án gồm những bảng nào?
Cơ sở dữ liệu NoSQL trên Firebase được thiết kế gồm 4 bảng dữ liệu chính:
Users: Lưu trữ thông tin cá nhân và vai trò người dùng (Bảng 20).
orders: Lưu trữ chi tiết các đơn đặt hàng, trạng thái xử lý và thông tin giao nhận (Bảng 21).
restaurants: Lưu trữ thông tin đối tác cửa hàng, vị trí và danh mục (Bảng 22).
menu: Lưu trữ danh sách món ăn, đơn giá và hình ảnh minh họa (Bảng 23).
5. Ba nguyên tắc bất biến của Redux được đề cập và ứng dụng trong đề tài là gì?
Ba nguyên lý cơ bản của Redux được trình bày trong đồ án gồm:
- Single Source of Truth: Store luôn là nguồn dữ liệu đúng và tin cậy duy nhất cho toàn bộ trạng thái ứng dụng.
- State Read-only: State chỉ được phép đọc; cách duy nhất để thay đổi State là phát sinh một Action thông qua hàm
dispatch(action).
- Pure Function Reducers: Các hàm Reducer phải là hàm thuần túy (với cùng một đầu vào State và Action chỉ cho ra một đầu ra State mới duy nhất mà không làm thay đổi trực tiếp State cũ).
Kết luận
Đồ án tốt nghiệp "Xây dựng hệ thống giao đồ ăn nhanh" của sinh viên Huỳnh Công Chiến và Trần Khương Duy đã giải quyết thành công bài toán xây dựng nền tảng đặt và giao thức ăn trực tuyến đa nền tảng kết nối người dùng, nhà hàng và người giao hàng. Bằng việc ứng dụng hiệu quả các công nghệ hiện đại gồm ReactJS, Redux, hệ sinh thái Google Firebase và hệ điều hành Android, hệ thống đã đáp ứng đầy đủ các yêu cầu chức năng từ đặt món, quản lý thực đơn đến đồng bộ trạng thái đơn hàng thời gian thực. Báo cáo khóa luận thể hiện cấu trúc trình bày học thuật chặt chẽ, đặc tả kỹ thuật chi tiết và đóng vai trò là tài liệu tham khảo thực tế cho các dự án phát triển phần mềm ứng dụng web và di động.