Giới thiệu dự án

Sự bùng nổ của nền kinh tế số và làn sóng đô thị hóa hiện đại tại Việt Nam đã thúc đẩy sự thay đổi sâu sắc trong hành vi tiêu dùng, đặc biệt là xu hướng đặt món ăn trực tuyến giao tận nơi (Online Food Delivery - OFD). Theo các báo cáo nghiên cứu thị trường từ Euromonitor International và khảo sát tiêu dùng ẩm thực của Kantar, thị trường giao đồ ăn trực tuyến tại Việt Nam đạt tốc độ tăng trưởng kép hàng năm (CAGR) trên 28%, với hơn 43% người dân tại TP. Hồ Chí Minh và 34% tại Hà Nội duy trì tần suất đặt món ít nhất 1 lần/tuần. Tuy nhiên, các doanh nghiệp dịch vụ ăn uống (F&B) vừa và nhỏ (SMEs) đang phải đối mặt với mức chiết khấu hoa hồng cao (từ 20% đến 30%) trên các nền tảng thương mại dịch vụ tập trung, đồng thời bị hạn chế trong việc quản lý dữ liệu khách hàng và đồng bộ quy trình vận hành nội bộ.

Đề tài "Xây dựng ứng dụng đặt đồ ăn online (BAC-FOOD)" do sinh viên Hoàng Văn Bắc thực hiện dưới sự hướng dẫn của TS. Nguyễn Thị Ngọc Tú tại Khoa Công nghệ Thông tin – Trường Đại học Điện Lực (EPU) được phát triển nhằm giải quyết triệt để bài toán xây dựng nền tảng giao dịch trực tiếp giữa đơn vị kinh doanh và người tiêu dùng.

[Khách hàng (Mobile App)] <---> [Firebase Cloud BaaS (Auth / Realtime DB)] <---> [Quản trị viên / Nhân viên (Admin Panel)]

Mục tiêu dự án

  1. Xây dựng giải pháp đa nền tảng: Phát triển ứng dụng di động hoàn chỉnh trên nền tảng Android/iOS bằng Flutter Framework và ngôn ngữ lập trình Dart, tối ưu hóa giao diện người dùng (UI/UX) cho ngành F&B.
  2. Thiết kế hệ thống Backend thời gian thực (Real-time BaaS): Tích hợp Firebase Realtime Database nhằm đồng bộ hóa trạng thái đơn hàng, dữ liệu sản phẩm và thông tin giỏ hàng tức thời với độ trễ dưới 200ms.
  3. Phân quyền người dùng chặt chẽ (Role-Based Access Control - RBAC): Tách biệt rõ ràng 3 phân hệ chức năng: Khách hàng (Customer), Nhân viên vận hành (Staff), và Quản trị viên (Admin).
  4. Tối ưu hóa hiệu năng ứng dụng: Đảm bảo thời gian phản hồi giao dịch dưới 2 giây, tỷ lệ giật khung hình (frame drop) xấp xỉ 0% với chuẩn dựng hình 60 FPS trên thiết bị di động.

Phạm vi và giới hạn hệ thống

  • Phạm vi triển khai: Ứng dụng tập trung vào chu trình khép kín từ tìm kiếm thực đơn, tạo giỏ hàng, đặt hàng, xử lý đơn tại điểm bán đến quản lý danh mục và người dùng.
  • Giới hạn kỹ thuật: Hệ thống phiên bản hiện tại áp dụng phương thức thanh toán khi nhận hàng (COD), cơ chế điều phối đơn hàng được kích hoạt thủ công qua tổng đài viên/nhân viên cửa hàng mà chưa tích hợp định tuyến GPS tự động cho đội ngũ giao vận độc lập (Third-party Logistics).

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Thị trường ứng dụng giao đồ ăn hiện nay tồn tại khoảng cách lớn giữa các siêu ứng dụng (Super-Apps) và các giải pháp tự phát của cửa hàng bán lẻ:

Tiêu chí so sánh Siêu ứng dụng (GrabFood, ShopeeFood) Ứng dụng Web truyền thống Giải pháp BAC-FOOD
Chi phí hoa hồng 20% - 30% doanh thu/đơn 0% (tự triển khai máy chủ) 0% chiết khấu nền tảng
Kiểm soát dữ liệu Nền tảng nắm giữ toàn bộ dữ liệu Cửa hàng nắm giữ Doanh nghiệp sở hữu 100% dữ liệu
Trải nghiệm di động Native/Hybrid hiệu năng cao Bị giới hạn trên trình duyệt di động Trải nghiệm Cross-Platform mượt mà (Flutter)
Khả năng đồng bộ Thời gian thực cao Phụ thuộc Polling/HTTP Request Thời gian thực 100% qua WebSocket Firebase
Chi phí hạ tầng Rất cao cho việc duy trì hệ thống Tốn phí thuê Server/Hosting cố định Linh hoạt theo tải lượng với mô hình Serverless

Ưu tiên yêu cầu theo mô hình MoSCoW

  • Must have (Bắt buộc có): Đăng nhập/Đăng ký xác thực; Duyệt danh mục thực đơn theo thời gian thực; Quản lý giỏ hàng và tính toán tổng tiền tự động; Quản lý quy trình đặt hàng và cập nhật trạng thái đơn (Pending -> Processing -> Completed); CRUD sản phẩm và danh mục dành cho Admin.
  • Should have (Nên có): Cơ chế lưu trữ đệm ngoại tuyến (Offline Caching) qua Local Cache của Firebase SDK; Tìm kiếm và lọc sản phẩm đa tiêu chí.
  • Could have (Có thể có): Đăng nhập qua mạng xã hội (Facebook/Google Auth); Thống kê báo cáo doanh thu theo mốc thời gian.
  • Won't have (Chưa triển khai ở pha này): Cổng thanh toán trực tuyến (VNPay/Momo/ZaloPay API); Tích hợp bản đồ dẫn đường thời gian thực cho shipper.

Thiết kế hệ thống

Hệ thống được tổ chức theo mô hình phân tầng MVC (Model - View - Controller) kết hợp kiến trúc hướng dịch vụ đám mây (Backend-as-a-Service):

+-------------------------------------------------------------+
|                      VIEW LAYER (UI)                        |
|  [HomeScreen]   [CartScreen]   [AdminScreen]  [AuthScreen]  |
+-------------------------------------------------------------+
                              | ^
           User Events (Tap)  | |  State/UI Updates
                              v |
+-------------------------------------------------------------+
|                     CONTROLLER LAYER                        |
|  [AuthController]  [CartController]  [ProductController]   |
+-------------------------------------------------------------+
                              | ^
            Read/Write Logic  | |  Stream/Future Data
                              v |
+-------------------------------------------------------------+
|                     MODEL & DATA LAYER                      |
|  [UserModel]   [FoodItemModel]   [OrderModel]   [Category]  |
|                                                             |
|           <---> Firebase Realtime Database Engine           |
+-------------------------------------------------------------+

Technology Stack và phiên bản sử dụng

  • Frontend Mobile Framework: Flutter SDK (v3.16.x) biên dịch mã nguồn nhị phân trực tiếp (ARM/x86).
  • Ngôn ngữ phát triển: Dart (v3.2.x) tận dụng hệ thống kiểu tĩnh (Sound Null Safety) và cơ chế bất đồng bộ async/await, Stream.
  • Môi trường phát triển tích hợp (IDE): Android Studio Hedgehog (v2023.1.1) kết hợp Flutter/Dart Plugins.
  • Hệ quản trị cơ sở dữ liệu & Backend: Google Firebase Realtime Database (NoSQL JSON tree structure) và Firebase Authentication.
  • Công cụ xây dựng & biên dịch: Java Development Kit (JDK 17), Gradle v8.2.

Thiết kế cấu trúc cơ sở dữ liệu NoSQL (JSON Schema)

{
  "Users": {
    "uid_string": {
      "fullName": "Hoàng Văn Bắc",
      "email": "bac@epu.edu.vn",
      "phoneNumber": "0377750975",
      "role": "Admin"
    }
  },
  "Categories": {
    "cat_id_01": {
      "categoryName": "Đồ ăn nhanh",
      "categoryImage": "https://storage.googleapis.com/..."
    }
  },
  "Products": {
    "prod_id_101": {
      "categoryId": "cat_id_01",
      "productName": "Burger Bò Phô Mai",
      "price": 45000,
      "description": "Thịt bò nướng than hoa kết hợp phô mai Cheddar",
      "imageUrl": "https://storage.googleapis.com/...",
      "isAvailable": true
    }
  },
  "Orders": {
    "order_id_5001": {
      "userId": "uid_string",
      "recipientName": "Nguyễn Văn A",
      "deliveryAddress": "235 Hoàng Quốc Việt, Cầu Giấy, Hà Nội",
      "phoneNumber": "0983813786",
      "totalAmount": 90000,
      "orderStatus": "Pending",
      "createdAt": 1705219200000,
      "items": [
        {
          "productId": "prod_id_101",
          "quantity": 2,
          "price": 45000
        }
      ]
    }
  }
}

Kiến trúc an toàn và bảo mật (Security Rules)

Hệ thống sử dụng cơ chế Access Token từ Firebase Authentication để bảo vệ dữ liệu trên Database. Mọi thao tác ghi dữ liệu danh mục và sản phẩm bị giới hạn nghiêm ngặt theo vai trò (Role):

{
  "rules": {
    "Categories": {
      ".read": "auth != null",
      ".write": "root.child('Users').child(auth.uid).child('role').val() === 'Admin'"
    },
    "Products": {
      ".read": "auth != null",
      ".write": "root.child('Users').child(auth.uid).child('role').val() === 'Admin'"
    },
    "Orders": {
      ".read": "auth != null",
      "$order_id": {
        ".write": "auth != null && (!data.exists() || data.child('userId').val() === auth.uid || root.child('Users').child(auth.uid).child('role').val() === 'Admin')"
      }
    }
  }
}

Methodology

Dự án áp dụng mô hình phát triển phần mềm theo phương pháp luận Agile/Scrum rút gọn, chia làm 4 Sprint chính trong thời gian 12 tuần:

[Tuần 1-3: Sprint 1] Khảo sát yêu cầu, thiết kế UML Use Case, dựng kiến trúc MVC
        |
        v
[Tuần 4-6: Sprint 2] Xây dựng UI Flutter, tích hợp Firebase Auth & Module Sản phẩm
        |
        v
[Tuần 7-9: Sprint 3] Xây dựng Module Giỏ hàng, Đặt hàng Real-time, phân quyền Admin
        |
        v
[Tuần 10-12: Sprint 4] Kiểm thử hiệu năng, tối ưu hóa bộ nhớ, đóng gói APK/AAB
  • Đánh giá và giảm thiểu rủi ro (Risk Mitigation):
    • Rủi ro mất kết nối mạng di động: Khắc phục bằng tính năng setPersistenceEnabled(true) của Firebase Realtime Database, đảm bảo ứng dụng ghi nhận thao tác vào Local Cache và đồng bộ tự động ngay khi có mạng trở lại.
    • Rủi ro tràn bộ nhớ (Memory Leak): Hủy đăng ký toàn bộ các StreamSubscriptionTextEditingController trong vòng đời dispose() của StatefulWidget.

Implementation và kết quả

Development process

Cấu trúc mã nguồn được phân định module rõ ràng theo chuẩn Flutter Best Practices:

  • lib/models/: Định nghĩa các cấu trúc dữ liệu và phương thức tuần tự hóa fromJson() / toJson().
  • lib/controllers/: Xử lý luồng nghiệp vụ (Business Logic) và tương tác với Firebase Database Reference.
  • lib/views/: Hệ thống màn hình giao diện người dùng (User & Admin Interface).
  • lib/widgets/: Các thành phần giao diện tái sử dụng (Custom Button, Product Card, Input Field).

Trích đoạn mã nguồn lõi: Xử lý giỏ hàng và đồng bộ đơn hàng bất đồng bộ

Dưới đây là cài đặt kỹ thuật trong Controller xử lý logic tạo đơn hàng bằng Dart:

import 'package:firebase_database/firebase_database.dart';
import '../models/order_model.dart';

class OrderController {
  final DatabaseReference _orderRef = 
      FirebaseDatabase.instance.ref().child('Orders');

  /// Xử lý gửi đơn hàng mới lên cơ sở dữ liệu thời gian thực
  /// Áp dụng kỹ thuật bất đồng bộ async/await với độ phức tạp thời gian O(1)
  Future<bool> submitOrder(OrderModel order) async {
    try {
      final DatabaseReference newOrderNode = _orderRef.push();
      final Map<String, dynamic> orderPayload = order.toMap();
      orderPayload['orderId'] = newOrderNode.key;
      orderPayload['createdAt'] = ServerValue.timestamp;

      await newOrderNode.set(orderPayload);
      return true;
    } catch (error) {
      // Ghi log xử lý ngoại lệ và ngắt luồng lỗi
      print('Lỗi xử lý đơn hàng: ${error.toString()}');
      return false;
    }
  }

  /// Lắng nghe luồng trạng thái đơn hàng thời gian thực (Reactive Stream)
  Stream<DatabaseEvent> listenToOrderStatus(String orderId) {
    return _orderRef.child(orderId).child('orderStatus').onValue;
  }
}

Testing và validation

Quá trình kiểm thử phần mềm được tiến hành qua các giai đoạn Unit Testing, Widget Testing và User Acceptance Testing (UAT).

+--------------------------+---------------------+-------------------+
|      Loại kiểm thử       |    Phạm vi bao phủ  |  Tỷ lệ đạt (Pass) |
+--------------------------+---------------------+-------------------+
| Unit Test (Logic)        | Controllers, Models |      92.5%        |
| Widget Test (Giao diện)  | Form, Buttons, Card |      88.0%        |
| Integration Test         | Auth -> Order Flow  |     100.0%        |
+--------------------------+---------------------+-------------------+

Bảng kịch bản kiểm thử nghiệm thu (Test Scenarios)

Mã kiểm thử Chức năng kiểm thử Dữ liệu đầu vào / Thao tác Kết quả kỳ vọng Trạng thái
TC-01 Đăng ký tài khoản Nhập thiếu trường thông tin Email/SĐT Hệ thống chặn submit, hiển thị thông báo lỗi Đạt (Pass)
TC-02 Thêm vào giỏ hàng Click "Chọn món" với số lượng n = 3 Giỏ hàng cập nhật n=3, tính đúng tổng tiền Đạt (Pass)
TC-03 Tạo đơn hàng (Checkout) Nhấn "Thanh toán" khi giỏ hàng rỗng Nút thanh toán bị vô hiệu hóa (Disabled) Đạt (Pass)
TC-04 Cập nhật đơn (Realtime) Admin đổi trạng thái "Pending" -> "Done" Màn hình khách hàng đổi màu/nhãn trong < 300ms Đạt (Pass)
TC-05 Phân quyền truy cập Tài khoản Customer cố truy cập URL Admin Hệ thống điều hướng về Trang chủ, từ chối quyền Đạt (Pass)

Đo lường hiệu năng kỹ thuật (Performance Benchmarks)

  • Thời gian khởi động ứng dụng (Cold Start): 1.15 giây (Thấp hơn mức trần 2.0s tiêu chuẩn).
  • Mức tiêu thụ tài nguyên phần cứng: Bộ nhớ RAM trung bình 68MB; mức chiếm dụng CPU < 5% ở trạng thái nhàn rỗi (idle) và < 18% khi cuộn danh mục liên tục.
  • Thời gian đáp ứng truy vấn dữ liệu (Query Latency): Trung bình 180ms với kết nối 4G/Wi-Fi thông thường.

Kết quả đạt được

Ứng dụng BAC-FOOD đã hoàn thành 100% các mục tiêu chức năng đặt ra trong đề cương đồ án:

  1. Module Khách hàng: Đăng nhập, tra cứu thực đơn danh mục, quản lý giỏ hàng động, thanh toán đơn hàng và xem lịch sử đơn hàng chi tiết.
  2. Module Quản trị: Toàn quyền thêm, sửa, xóa, tìm kiếm danh mục và món ăn; cập nhật giá và ẩn/hiện sản phẩm theo thời gian thực; tiếp nhận và phân loại trạng thái đơn hàng.
  3. Chỉ số hài lòng người dùng: Khảo sát thử nghiệm trên 35 người dùng cho thấy điểm hài lòng trung bình (CSAT) đạt 4.6/5.0, trong đó 94% người dùng đánh giá cao tốc độ phản hồi tức thì của giỏ hàng.

Đổi mới và đóng góp

  1. Ứng dụng triệt để kiến trúc Serverless BaaS cho bài toán F&B: Thay vì duy trì máy chủ backend phức tạp tốn kém (như Spring Boot hay Node.js trên VPS riêng), dự án tận dụng toàn diện Firebase BaaS, giúp giảm 100% chi phí duy trì phần cứng máy chủ trong giai đoạn khởi nghiệp ban đầu.
  2. Khả năng đồng bộ Reactive UI thời gian thực: Sử dụng cơ chế lắng nghe sự kiện luồng (StreamListener) từ Firebase SDK kết hợp với các Widget tự render lại (StreamBuilder) trong Flutter. Trạng thái món ăn hết hàng hoặc đơn hàng được cập nhật đồng thời trên thiết bị khách hàng mà không cần tải lại trang (Zero-reload).
  3. Rút ngắn chu kỳ phát triển ứng dụng di động: Tận dụng cơ chế Hot Reload và kiến trúc Widget đa nền tảng của Flutter, giúp tiết kiệm 40% thời gian lập trình so với việc phát triển hai ứng dụng Native riêng biệt (Java/Kotlin cho Android và Swift cho iOS).

Ứng dụng thực tế và triển khai

Kịch bản vận hành thực tế

Mô hình BAC-FOOD được thiết kế chuyên biệt cho các chuỗi quán ăn, trà sữa, thức ăn nhanh quy mô vừa và nhỏ:

  • Bước 1: Khách hàng mở ứng dụng, hệ thống tự động xác thực và tải danh mục món ăn cập nhật mới nhất từ Firebase Realtime Database.
  • Bước 2: Khách hàng chọn món, tùy chỉnh số lượng, kiểm tra tổng tiền tại màn hình Giỏ hàng và xác nhận đặt hàng.
  • Bước 3: Bộ phận bếp và quản trị viên nhận tín hiệu đơn hàng mới trên màn hình quản lý đơn tức thì, tiến hành duyệt và xử lý món ăn.
  • Bước 4: Nhân viên chuyển đổi trạng thái đơn sang "Đang giao" -> "Hoàn thành", hệ thống tự động lưu trữ hóa đơn vào lịch sử giao dịch của khách hàng.
[Khách hàng tạo đơn] 
       │ 
       ▼ (Độ trễ < 200ms)
[Firebase Realtime Node: /Orders] 
       │ 
       ▼ (Tự động kích hoạt Stream)
[Màn hình Admin tiếp nhận -> Đổi trạng thái] 
       │ 
       ▼ (Đồng bộ tức thời)
[Màn hình Lịch sử đơn của Khách báo Thành công]

Chiến lược đóng gói và triển khai hệ thống

  • Yêu cầu môi trường máy trạm: Android 7.0 (API Level 24) trở lên, dung lượng bộ nhớ trống tối thiểu 50MB.
  • Quy trình Build Artifacts:
    1. Tối ưu hóa tệp tin cấu hình Gradle: kích hoạt chế độ R8 Code Shrinking và ProGuard để giảm kích thước file cài đặt.
    2. Thực thi lệnh biên dịch nhị phân:
    flutter build apk --release --split-per-abi
    
    1. Xuất bản tệp tin app-armeabi-v7a-release.apkapp-arm64-v8a-release.apk với dung lượng tối ưu chỉ 16.8 MB.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Cơ chế lưu trữ NoSQL dạng cây (Hierarchical Tree): Khi quy mô bản ghi vượt quá 100.000 đơn hàng, cấu trúc JSON phẳng sâu của Realtime Database có thể dẫn đến việc tải thừa dữ liệu nếu không phân trang (Pagination) chặt chẽ.
  • Phương thức thanh toán: Chưa tích hợp SDK thanh toán trung gian trực tuyến qua thẻ tín dụng hoặc ví điện tử.
  • Theo dõi vị trí: Thiếu tính năng theo dõi vị trí thực của người giao hàng trên bản đồ số thời gian thực.

Hướng phát triển trong tương lai

  1. Chuyển đổi sang Cloud Firestore & Cloud Functions: Nâng cấp hệ cơ sở dữ liệu lên Cloud Firestore để hỗ trợ các truy vấn lọc phức tạp (Indexing & Compound Queries) và xử lý logic backend tập trung qua Cloud Functions.
  2. Tích hợp cổng thanh toán trực tuyến: Cài đặt cổng thanh toán VNPay SDK và MoMo Payment API nhằm đa dạng hóa phương thức giao dịch không dùng tiền mặt.
  3. Định vị GPS & Thuật toán gom đơn: Tích hợp Google Maps Platform API và Mapbox SDK để tối ưu hóa quãng đường giao nhận hàng cho shipper.

Đối tượng hưởng lợi

  • Sinh viên chuyên ngành Công nghệ thông tin / Công nghệ phần mềm: Tài liệu tham khảo thực tế về quy trình phát triển ứng dụng di động chuẩn từ phân tích biểu đồ UML (Use Case, Sequence, Activity Diagram) đến triển khai Flutter.
  • Lập trình viên Mobile (Developers): Cung cấp mẫu thiết kế (Code Pattern) triển khai mô hình MVC kết hợp kiến trúc cơ sở dữ liệu thời gian thực NoSQL với Firebase BaaS trên Flutter.
  • Doanh nghiệp kinh doanh F&B (SMEs): Mô hình giải pháp độc lập giúp tiết kiệm 100% phí chiết khấu nền tảng bên thứ ba, tự chủ hoàn toàn trong việc quản trị dữ liệu khách hàng.
  • Nhà nghiên cứu ứng dụng: Dữ liệu thực nghiệm về việc đánh giá hiệu năng giữa kiến trúc Serverless BaaS so với mô hình Client-Server truyền thống trên thiết bị di động.

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

1. Yêu cầu cấu hình phần cứng và phần mềm để triển khai ứng dụng là gì?

Ứng dụng tương thích với mọi thiết bị di động chạy hệ điều hành Android từ phiên bản 7.0 trở lên hoặc iOS từ 12.0 trở lên, dung lượng RAM tối thiểu 1.5GB và bộ nhớ trống từ 50MB. Về phía nhà phát triển, cần cài đặt Flutter SDK v3.16+, Android Studio và Java JDK 17.

2. Khả năng mở rộng (Scalability) của hệ thống Firebase Realtime Database đạt mức nào?

Firebase Realtime Database hỗ trợ lên tới 200.000 kết nối đồng thời (Concurrent Connections) và xử lý hàng triệu bản ghi đọc/ghi mỗi ngày trên một cơ sở dữ liệu duy nhất mà không yêu cầu cấu hình cân bằng tải (Load Balancing) thủ công.

3. Làm thế nào để tích hợp hệ thống với các phần mềm POS có sẵn tại nhà hàng?

Hệ thống có thể mở rộng thông qua RESTful API của Firebase. Các phần mềm quản lý bán hàng (POS) hiện tại của cửa hàng chỉ cần gửi HTTP POST/GET requests có chứa Auth Token đến Firebase Endpoint để đồng bộ hóa danh mục món ăn và xuất hóa đơn tức thời.

4. Chi phí vận hành và bảo trì hệ thống hàng tháng ước tính là bao nhiêu?

Với quy mô cửa hàng vừa và nhỏ (dưới 1.000 đơn hàng/ngày), gói miễn phí Firebase Spark Plan hoàn toàn đáp ứng đủ tài nguyên (1GB lưu trữ, 10GB băng thông/tháng). Doanh nghiệp chỉ chi trả khi vượt ngưỡng theo gói Blaze Plan (Pay-as-you-go) với chi phí ước tính dưới 10 - 15 USD/tháng.

5. Dữ liệu khách hàng được bảo mật như thế nào trong trường hợp mất kết nối hoặc tấn công mạng?

Mọi đường truyền dữ liệu đều được mã hóa theo giao thức HTTPS/SSL. Dữ liệu tại cơ sở dữ liệu được kiểm soát nghiêm ngặt thông qua hệ thống phân quyền Firebase Security Rules, ngăn chặn truy cập trái phép trực tiếp vào các nút dữ liệu của Admin.


Kết luận

Đồ án tốt nghiệp "Xây dựng ứng dụng đặt đồ ăn online (BAC-FOOD)" của sinh viên Hoàng Văn Bắc đã hoàn thành xuất sắc các mục tiêu nghiên cứu và ứng dụng thực tiễn trong chuyên ngành Công nghệ phần mềm. Thông qua việc kết hợp nền tảng Flutter hiện đại cùng hệ thống Firebase Realtime Database, dự án đã giải quyết thành công bài toán tối ưu hóa trải nghiệm đặt món, tự động hóa quy trình quản trị đơn hàng với hiệu năng cao và chi phí hạ tầng tối thiểu. Đây là giải pháp công nghệ có tính khả thi cao, sẵn sàng chuyển giao và mở rộng cho các doanh nghiệp dịch vụ ăn uống trong bối cảnh chuyển đổi số mạnh mẽ hiện nay.