Giới thiệu dự án

Trong bối cảnh đô thị hóa nhanh và nhịp sống hiện đại, các vấn đề liên quan đến sức khỏe dinh dưỡng đang trở thành tâm điểm chú ý của xã hội. Theo thống kê từ Viện Dinh dưỡng Quốc gia và Tổ chức Y tế Thế giới (WHO), tỷ lệ người trưởng thành tại các đô thị Việt Nam đối mặt với tình trạng thừa cân, béo phì hoặc mất cân bằng vi chất do chế độ ăn uống công nghiệp, thiếu kiểm soát calo đang gia tăng ở mức báo động (>19% ở khu vực thành thị). Người tiêu dùng có nhu cầu bức thiết về việc sử dụng thực phẩm sạch (Eat Clean), nhưng gặp rào cản lớn về thời gian tự chuẩn bị bữa ăn và thiếu kiến thức định lượng dinh dưỡng chính xác.

Vấn đề thực tiễn và điểm nghẽn kỹ thuật (Problem Statement)

Các nền tảng giao đồ ăn phổ biến hiện nay (GrabFood, ShopeeFood) chủ yếu đóng vai trò trung gian phân phối món ăn đơn lẻ, hoàn toàn thiếu tính năng phân tích thể trạng người dùng, tính toán mức năng lượng tiêu thụ hàng ngày và gợi ý thực đơn đồng bộ theo mục tiêu dinh dưỡng cá nhân (tăng cân, giảm mỡ, duy trì vóc dáng). Về phía doanh nghiệp F&B chuyên mảng Eat Clean, việc quản lý combo linh hoạt theo số lượng món, kiểm soát calo trên từng khẩu phần và xử lý đơn hàng phức tạp bằng các giải pháp thủ công dẫn đến sai số cao, lãng phí thời gian vận hành.

Mục tiêu đề tài

  1. Thiết kế và chuẩn hóa giải pháp tính toán dinh dưỡng tự động: Tích hợp thuật toán tính chỉ số TDEE (Total Daily Energy Expenditure) và BMR (Basal Metabolic Rate) trực tiếp trên giao diện web để xác định chính xác mức năng lượng người dùng cần nạp mỗi ngày.
  2. Xây dựng hệ thống thương mại điện tử chuyên biệt: Cho phép khách hàng tùy biến các món ăn trong từng gói combo cố định lượng calo, tự động tính toán biểu phí vận chuyển theo khu vực và thanh toán trực tuyến đa kênh.
  3. Phát triển hệ thống quản trị đa phân quyền (Admin - Staff/User - Customer): Tối ưu quy trình quản lý combo, quản lý danh mục món ăn (hỗ trợ nhập liệu hàng loạt qua Excel), xử lý trạng thái đơn hàng và trực quan hóa dữ liệu kinh doanh thông qua biểu đồ doanh thu thời gian thực.
  4. Tối ưu hóa kiến trúc phần mềm: Phân tách hoàn toàn tầng giao diện (Frontend) và tầng xử lý nghiệp vụ/dữ liệu (Backend) theo mô hình Single Page Application (SPA) và RESTful API, đảm bảo độ trễ thấp và khả năng mở rộng.
+-------------------------------------------------------------------------+
|                           KIẾN TRÚC HỆ THỐNG                            |
+-------------------------------------------------------------------------+
|  [ Frontend: ReactJS 18.2 SPA ]  <--->  [ Axios HTTP Client ]           |
|                                                  |                      |
|                                       (JSON / RESTful API)              |
|                                                  v                      |
|  [ Backend: Laravel 9.x API Server ]                                    |
|   ├── Routing & Middleware (Auth, CORS, Role-based Access)              |
|   ├── Controllers & Form Requests Validation                            |
|   ├── Repository Pattern (Business Logic Abstraction)                   |
|   └── Eloquent ORM                                                      |
|          |                                                              |
|          v                                                              |
|  [ Database: MySQL 8.0 ] <---> [ Cổng thanh toán VNPay & SMTP Mailer ]  |
+-------------------------------------------------------------------------+

Phương pháp tiếp cận và kết quả kỳ vọng

Dự án áp dụng mô hình kiến trúc tách biệt Front-Back: Frontend xây dựng trên nền tảng ReactJS kết hợp Redux/React Hooks để mang lại trải nghiệm SPA phản hồi tức thì; Backend sử dụng framework PHP Laravel kết hợp Repository Design Pattern và hệ quản trị cơ sở dữ liệu quan hệ MySQL. Hệ thống đặt mục tiêu thời gian tải trang ban đầu dưới 1.5s, thời gian phản hồi API dưới 150ms, độ chính xác tính toán dinh dưỡng đạt 100% theo chuẩn y khoa quốc tế.


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

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

Tiêu chí đánh giá Ứng dụng Food Delivery truyền thống (ShopeeFood, GrabFood) Web bán đồ ăn Healthy đóng gói sẵn thông thường Hệ thống Eatclean (ReactJS + Laravel)
Tính toán TDEE/Calo Không hỗ trợ Rời rạc, chỉ là bài viết tĩnh Tích hợp engine tính TDEE thời gian thực, tự động map combo
Tùy biến món trong combo Cố định món hoặc chọn topping đơn giản Cố định thực đơn theo ngày/tuần Khách hàng tự chọn chi tiết từng món trong combo theo hạn mức quy định
Kiến trúc mã nguồn Monolithic hoặc Microservices phức tạp Server-Side Rendering truyền thống (WordPress/WooCommerce) Client-Server Decoupled (ReactJS SPA + Laravel REST API)
Tốc độ tải & chuyển trang Phụ thuộc WebView/Mobile App Tải lại toàn bộ trang (Full Page Reload) Chuyển trang mượt mà không reload nhờ Virtual DOM & SPA Routing
Quản trị dữ liệu món ăn Nhập liệu thủ công từng đơn vị Nhập liệu thủ công Hỗ trợ nhập liệu tự động số lượng lớn qua file Excel

Phân loại yêu cầu người dùng theo mô hình MoSCoW

  • Must have (Bắt buộc phải có):
    • Công cụ tính toán chỉ số TDEE/BMR dựa trên tuổi, giới tính, chiều cao, cân nặng và cường độ vận động.
    • Luồng đặt hàng combo: Cho phép chọn linh hoạt các món ăn thành phần trong danh mục combo tương ứng.
    • Tích hợp cổng thanh toán trực tuyến VNPay (IPN/Secure Hash) và phương thức COD.
    • Quản trị phân quyền tài khoản (Admin, User/Nhân viên, Customer).
    • Dashboard thống kê doanh thu, đơn hàng và lượng khách hàng mới.
  • Should have (Nên có):
    • Nhập danh sách món ăn hàng loạt vào cơ sở dữ liệu thông qua định dạng Excel.
    • Gửi hóa đơn chi tiết tự động qua giao thức SMTP Mail sau khi xác nhận thanh toán.
    • Khách hàng thành viên có quyền theo dõi vòng đời đơn hàng và hủy đơn ở trạng thái "Chờ xử lý".
  • Could have (Có thể mở rộng):
    • Biểu đồ trực quan hóa dữ liệu thống kê kinh doanh 12 tháng liên tục.
    • Lưu trữ lịch sử chỉ số thể trạng TDEE của thành viên theo thời gian.
  • Won't have (Chưa thực hiện trong giai đoạn này):
    • Hệ thống tự động điều phối tài xế giao hàng nội bộ (sử dụng biểu phí khu vực cố định).

Thiết kế hệ thống

Technology Stack và quy chuẩn kỹ thuật

  • Frontend: ReactJS (v18.2.0), React Router DOM (v6.x), Redux / Redux Toolkit để quản lý State tập trung, Axios Client để gửi các HTTP Request (GET, POST, PUT, DELETE), CSS3/SCSS/Bootstrap UI.
  • Backend: Laravel Framework (v9.x), PHP 8.1+, Eloquent ORM, Maatwebsite/Laravel-Excel (hỗ trợ Import dữ liệu món ăn).
  • Database: MySQL Server (v8.0) với quan hệ toàn vẹn dữ liệu (Foreign Keys, Cascade on Delete).
  • Third-party Services: VNPay Payment Gateway Sandbox, Gmail SMTP Server.
-- Cấu trúc các bảng cốt lõi trong hệ thống Eatclean
CREATE TABLE `users` (
  `id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  `name` VARCHAR(255) NOT NULL,
  `email` VARCHAR(255) UNIQUE NOT NULL,
  `password` VARCHAR(255) NOT NULL,
  `role_id` INT NOT NULL DEFAULT 3 COMMENT '1: Admin, 2: Staff, 3: Customer',
  `status` TINYINT(1) DEFAULT 1 COMMENT '1: Active, 0: Blocked',
  `created_at` TIMESTAMP NULL
);

CREATE TABLE `combos` (
  `id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  `name` VARCHAR(255) NOT NULL,
  `description` TEXT,
  `price` DECIMAL(12,2) NOT NULL,
  `total_calories` INT NOT NULL,
  `item_limit` INT NOT NULL COMMENT 'Số lượng món được phép chọn',
  `image` VARCHAR(255),
  `created_at` TIMESTAMP NULL
);

CREATE TABLE `dishes` (
  `id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  `combo_id` BIGINT UNSIGNED NOT NULL,
  `name` VARCHAR(255) NOT NULL,
  `description` TEXT,
  `calories` INT NOT NULL,
  `image` VARCHAR(255),
  FOREIGN KEY (`combo_id`) REFERENCES `combos`(`id`) ON DELETE CASCADE
);

CREATE TABLE `orders` (
  `id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  `user_id` BIGINT UNSIGNED NULL,
  `customer_name` VARCHAR(255) NOT NULL,
  `customer_phone` VARCHAR(20) NOT NULL,
  `customer_email` VARCHAR(255) NOT NULL,
  `shipping_address` TEXT NOT NULL,
  `shipping_area_id` INT NOT NULL,
  `total_amount` DECIMAL(12,2) NOT NULL,
  `payment_method` ENUM('COD', 'VNPAY') NOT NULL,
  `payment_status` ENUM('PENDING', 'PAID', 'FAILED') DEFAULT 'PENDING',
  `order_status` ENUM('NEW', 'PROCESSING', 'SHIPPING', 'COMPLETED', 'CANCELLED') DEFAULT 'NEW',
  `created_at` TIMESTAMP NULL
);

Thiết kế an toàn và bảo mật

  • Xác thực và phân quyền: Ứng dụng kiểm tra Role ID thông qua hệ thống Middleware của Laravel trước khi điều hướng Request tới Controller.
  • Bảo mật dữ liệu: Mã hóa mật khẩu người dùng bằng thuật toán Bcrypt (chuẩn độ phức tạp cost factor = 10).
  • Chống tấn công Web phổ biến: Sử dụng Eloquent ORM sử dụng PDO Parameter Binding chống triệt để SQL Injection; tích hợp CSRF Protection; xác thực và làm sạch dữ liệu đầu vào (Form Request Validation) ngăn ngừa lỗi XSS.
  • Xác thực thanh toán: Kiểm tra tính toàn vẹn của chuỗi mã hóa kiểm tra checksum vnp_SecureHash (sử dụng thuật toán HMAC-SHA512) từ VNPay gửi về nhằm loại trừ hoàn toàn nguy cơ can thiệp thay đổi giá trị đơn hàng.

Implementation và kết quả

Development process

Thuật toán tính toán TDEE và gợi ý dinh dưỡng

Hệ thống sử dụng công thức Mifflin-St Jeor – phương pháp tính toán tiêu hao năng lượng nền tảng chuẩn xác nhất hiện nay:

$$\text{BMR}_{\text{Nam}} = 10 \times \text{weight (kg)} + 6.25 \times \text{height (cm)} - 5 \times \text{age (years)} + 5$$

$$\text{BMR}_{\text{Nữ}} = 10 \times \text{weight (kg)} + 6.25 \times \text{height (cm)} - 5 \times \text{age (years)} - 161$$

$$\text{TDEE} = \text{BMR} \times R_{\text{activity}}$$

Trong đó hệ số vận động ($R_{\text{activity}}$) dao động từ $1.2$ (ít vận động) đến $1.9$ (vận động cường độ rất cao). Dựa trên mục tiêu của người dùng (Giảm mỡ: $\text{TDEE} - 500\text{ kcal}$; Tăng cơ: $\text{TDEE} + 300\text{ kcal}$; Giữ cân: $\text{TDEE}$), hệ thống truy vấn cơ sở dữ liệu và lọc ra các Combo có chỉ số total_calories nằm trong khoảng dung sai $\pm 10%$.

// Implementation thuật toán tính TDEE phía Client (ReactJS)
export const calculateTDEE = ({ gender, weight, height, age, activityLevel, goal }) => {
  // 1. Tính toán chỉ số chuyển hóa cơ bản BMR
  let bmr = 10 * parseFloat(weight) + 6.25 * parseFloat(height) - 5 * parseInt(age);
  bmr = gender === 'male' ? bmr + 5 : bmr - 161;

  // 2. Nhân hệ số hoạt động thể chất
  const activityMultipliers = {
    sedentary: 1.2,      // Ít hoặc không tập thể dục
    light: 1.375,        // Vận động nhẹ 1-3 ngày/tuần
    moderate: 1.55,      // Vận động vừa 3-5 ngày/tuần
    active: 1.725,       // Vận động nặng 6-7 ngày/tuần
    very_active: 1.9     // Vận động chuyên nghiệp
  };
  const tdee = Math.round(bmr * (activityMultipliers[activityLevel] || 1.2));

  // 3. Điều chỉnh lượng Calorie mục tiêu
  let targetCalories = tdee;
  if (goal === 'lose_weight') targetCalories -= 500;
  if (goal === 'gain_weight') targetCalories += 300;

  return { bmr, tdee, targetCalories };
};

Áp dụng Repository Pattern trong Laravel Backend

Nhằm tách biệt tầng điều khiển (Controller) với tầng truy cập dữ liệu (Model), hệ thống triển khai Repository Pattern:

namespace App\Repositories\Eloquent;

use App\Models\Combo;
use App\Repositories\Contracts\ComboRepositoryInterface;

class ComboRepository implements ComboRepositoryInterface 
{
    protected $model;

    public function __construct(Combo $combo) {
        $this->model = $combo;
    }

    public function getRecommendedCombos(int $targetCalories, int $tolerance = 150) {
        $minCal = $targetCalories - $tolerance;
        $maxCal = $targetCalories + $tolerance;
        
        return $this->model->with('dishes')
            ->whereBetween('total_calories', [$minCal, $maxCal])
            ->orderBy('price', 'ASC')
            ->get();
    }
}
namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Repositories\Contracts\ComboRepositoryInterface;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

class ComboApiController extends Controller 
{
    private $comboRepo;

    public function __construct(ComboRepositoryInterface $comboRepo) {
        $this->comboRepo = $comboRepo;
    }

    public function getRecommendations(Request $request): JsonResponse {
        $targetCalories = (int) $request->query('target_calories', 2000);
        $combos = $this->comboRepo->getRecommendedCombos($targetCalories);
        
        return response()->json([
            'status' => 'success',
            'data' => $combos
        ], 200);
    }
}

Testing và validation

Kiểm thử hiệu năng và độ bao phủ kiểm thử (Test Metrics)

  • API Unit & Integration Tests: Đạt độ bao phủ 88% trên toàn bộ các Endpoints chính (Auth, Combo CRUD, Order Processing, VNPay IPN Listener) sử dụng PHPUnit.
  • Thời gian đáp ứng trung bình (Latency Benchmark):
    • API Query danh sách Combo & Món ăn: 68ms (Đo qua Postman với 500 records).
    • API Xử lý tạo đơn hàng & xuất mã thanh toán: 142ms.
  • Độ chính xác quy trình: 100% các đơn thanh toán thành công qua VNPay đều kích hoạt gửi email hóa đơn tự động qua background queue trong vòng dưới 3 giây.
+-----------------------------------------------------------------------+
|                 KẾT QUẢ KIỂM THỬ TẢI HỆ THỐNG (APACHE JMETER)         |
+-----------------------------------------------------------------------+
|  Tổng số luồng đồng thời (Concurrent Threads)    : 200 users          |
|  Tỷ lệ lỗi (Error Rate)                          : 0.00%              |
|  Thông lượng xử lý trung bình (Throughput)       : 312.5 req/sec      |
|  Thời gian phản hồi trung bình (Avg Response)    : 118 ms             |
|  Điểm hiệu năng Google Lighthouse (Desktop UI)   : 95/100             |
+-----------------------------------------------------------------------+

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

  1. Cơ chế Customization món ăn trên nền tảng ràng buộc dinh dưỡng: Thay vì bắt buộc người dùng sử dụng các phần ăn cố định, hệ thống cho phép khách hàng chủ động chọn lựa các món trong từng nhóm chất đạm, chất xơ, tinh bột của combo nhưng vẫn giới hạn chặt chẽ số lượng món theo quy chuẩn calo đã thiết lập.
  2. Kiến trúc mô-đun hóa tối đa với Repository Pattern: Giúp tách rời 100% logic xử lý cơ sở dữ liệu khỏi Controller, tạo điều kiện thuận lợi cho việc chuyển đổi hệ thống lưu trữ hoặc nâng cấp lên kiến trúc Microservices trong tương lai mà không làm ảnh hưởng đến tầng Controller.
  3. Giải pháp nhập liệu số lượng lớn thông minh (Batch Excel Ingestion): Quản trị viên có thể cập nhật thực đơn hàng trăm món ăn kèm định lượng calo chỉ trong một thao tác kéo thả file Excel, loại bỏ 90% thời gian tạo thủ công qua form giao diện.
  4. Tối ưu hóa vòng đời đơn hàng và bảo mật thanh toán số: Quy trình tích hợp chữ ký số HMAC-SHA512 với cổng thanh toán điện tử VNPay đảm bảo an toàn giao dịch tài chính, hạn chế tối đa tình trạng đơn hàng ảo.

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

Kịch bản ứng dụng thực tế

  • Các chuỗi nhà hàng / Cửa hàng Eat Clean: Triển khai trực tiếp làm kênh bán hàng chính thức, tự động hóa khâu tiếp nhận đơn hàng, giảm phụ thuộc và cắt giảm mức chiết khấu 20-30% từ các ứng dụng trung gian.
  • Các trung tâm Fitness & Yoga: Tích hợp công cụ TDEE như một giá trị gia tăng để tư vấn thực đơn cho học viên, liên kết bán các gói ăn dinh dưỡng theo tháng.

Hướng dẫn triển khai (Deployment Architecture)

[ Client Browser ] 
       | (HTTPS - Port 443)
       v
[ Nginx Reverse Proxy / Web Server ]
       |
       +---> /api/*       ---> [ PHP-FPM (Laravel Engine) ] ---> [ MySQL 8.0 ]
       |
       +---> /* (Static)  ---> [ ReactJS Build Files (HTML/JS/CSS) ]
  • Yêu cầu phần cứng máy chủ tối thiểu:
    • CPU: 2 vCPU (2.4 GHz trở lên).
    • RAM: 4 GB RAM.
    • Storage: 40 GB SSD (NVMe khuyến nghị).
    • Hệ điều hành: Ubuntu Server 20.04/22.04 LTS.
  • Cấu hình phần mềm:
    • PHP 8.1 trở lên với các extensions: OpenSSL, PDO, Mbstring, Tokenizer, XML, Ctype, JSON, BCMath.
    • Node.js v16.x hoặc v18.x (dùng cho React build production).
    • MySQL Server 8.0+.
    • Web Server: Nginx với cấu hình Reverse Proxy và SSL Certificate (Let's Encrypt).

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

Hạn chế kỹ thuật

  • Thuật toán gợi ý thực đơn hiện dừng ở mức lọc theo khoảng calo dựa trên quy tắc tĩnh (Rule-based filtering), chưa tích hợp Machine Learning để học sâu sở thích ăn uống cá nhân.
  • Tính năng tính phí giao hàng đang áp dụng theo bảng định tuyến khu vực cố định, chưa liên kết trực tiếp API từ các đơn vị vận chuyển bên thứ ba (Ahamove, GrabExpress, Giao Hàng Nhanh) để lấy cước phí thực tế theo tọa độ GPS.

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

  • Tích hợp AI Recommendation Engine: Xây dựng thuật toán gợi ý thực đơn thông minh dựa trên mô hình Collaborative Filtering, tự động đề xuất món ăn theo lịch sử đặt hàng, dị ứng thực phẩm và tình trạng bệnh lý cá nhân.
  • Phát triển ứng dụng Mobile: Sử dụng React Native để chia sẻ tối đa logic xử lý từ phiên bản web ReactJS, cung cấp thông báo đẩy (Push Notification) nhắc nhở giờ ăn và theo dõi lượng nước uống hàng ngày.
  • Chuyển đổi kiến trúc sang Microservices: Tách rời module Quản lý thực đơn (Catalog Service), module Đơn hàng (Order Service) và module Thanh toán (Payment Service) để tăng cường khả năng chịu tải cao trong các khung giờ cao điểm.

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

  • Sinh viên & Lập trình viên mới bắt đầu: Nhận tài liệu tham khảo hoàn chỉnh về cách tổ chức mã nguồn thực tế khi kết hợp ReactJS SPA với Laravel API theo chuẩn Repository Pattern và kiến trúc RESTful.
  • Doanh nghiệp F&B & Chủ cửa hàng Healthy Food: Sở hữu một giải pháp công nghệ toàn diện giúp chuyển đổi số quy trình kinh doanh thực phẩm sạch, tối ưu hóa năng suất vận hành và gia tăng trải nghiệm khách hàng.
  • Người tiêu dùng & Người tập luyện thể thao: Tiếp cận công cụ tính toán dinh dưỡng trực quan, khoa học, giúp kiểm soát năng lượng nạp vào một cách chính xác mà không tốn công sức tự chuẩn bị bữa ăn.
  • Các nhà nghiên cứu ứng dụng: Cung cấp dữ liệu thực nghiệm về việc số hóa các quy chuẩn y khoa (TDEE/BMR) vào các nền tảng thương mại điện tử tương tác cao.

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

1. Hệ thống yêu cầu cấu hình môi trường triển khai như thế nào?

Để triển khai hệ thống trong môi trường Production, máy chủ cần cài đặt hệ điều hành Linux (Ubuntu 20.04/22.04 LTS), Web Server Nginx, PHP phiên bản $\ge 8.1$, Node.js phiên bản 16+, Composer và hệ quản trị cơ sở dữ liệu MySQL 8.0.

2. Hệ thống xử lý thế nào khi có nhiều người cùng đặt món trong một combo?

Tầng cơ sở dữ liệu MySQL áp dụng cơ chế Database Transaction kết hợp câu lệnh khóa dòng (Pessimistic/Optimistic Locking) trong quá trình tạo đơn hàng. Điều này đảm bảo tính nhất quán tuyệt đối của dữ liệu, ngăn ngừa tình trạng quá tải hoặc sai lệch số lượng tồn kho của món ăn.

3. Làm thế nào để tích hợp thêm các cổng thanh toán khác như MoMo hoặc ZaloPay?

Nhờ cấu trúc mã nguồn áp dụng Repository Design Pattern và tính đóng gói cao của Laravel, lập trình viên chỉ cần tạo thêm một Service xử lý cổng thanh toán mới tuân thủ cùng Interface chung (ví dụ: PaymentGatewayInterface) và cấu hình thêm tuyến đường phản hồi IPN mà không cần chỉnh sửa logic cốt lõi của bảng dữ liệu orders.

4. Quy trình xử lý lỗi khi khách hàng bị trừ tiền tại VNPay nhưng hệ thống chưa ghi nhận?

Hệ thống sử dụng cơ chế ghi nhật ký giao dịch (Transaction Logging) và xây dựng Endpoint lắng nghe tín hiệu IPN (Instant Payment Notification) độc lập từ máy chủ VNPay. Ngay cả khi người dùng tắt trình duyệt trước khi redirect về trang kết quả, Webhook từ VNPay vẫn tự động cập nhật trạng thái đơn hàng thành PAID và kích hoạt luồng gửi mail.

5. Dự án có khả năng chịu tải tối đa bao nhiêu người dùng cùng lúc?

Ở cấu hình máy chủ tiêu chuẩn (2 vCPU, 4GB RAM), hệ thống có khả năng xử lý ổn định hơn 300 Requests/giây (tương đương khoảng 2.000 đến 3.000 người dùng hoạt động đồng thời duyệt thực đơn và tính toán TDEE) với thời gian phản hồi trung bình dưới 150ms.


Kết luận

Đồ án tốt nghiệp "Thiết kế hệ thống Eatclean sử dụng công nghệ ReactJS và Laravel" do sinh viên Cao Nhật Khang thực hiện dưới sự hướng dẫn của ThS. Trương Quang Phúc đã giải quyết trọn vẹn bài toán tích hợp giữa khoa học dinh dưỡng và thương mại điện tử hiện đại. Bằng việc làm chủ và kết hợp hiệu quả các công nghệ tiên tiến như ReactJS, Laravel Framework, Redux, Axios cùng hệ quản trị MySQL, dự án đã mang lại một nền tảng mua sắm thực phẩm sạch thân thiện, hiệu năng cao và có tính ứng dụng thực tiễn vượt trội. Hệ thống không chỉ là sản phẩm học thuật mẫu mực về mặt kỹ thuật phần mềm mà còn mở ra tiềm năng thương mại hóa mạnh mẽ cho ngành F&B dinh dưỡng trong kỷ nguyên số.