Giới thiệu dự án
Thương mại điện tử trên thiết bị di động (M-Commerce) đang chứng kiến sự tăng trưởng vượt bậc. Theo các báo cáo thị trường bán lẻ kỹ thuật số, hơn 72% giao dịch thương mại trực tuyến hiện nay được thực hiện thông qua smartphone. Trong ngành hàng thời trang và giày dép đặc thù, nhu cầu mua sắm tiện lợi, nhanh chóng mà không cần trực tiếp đến cửa hàng truyền thống ngày càng gia tăng. Tuy nhiên, các doanh nghiệp bán lẻ vừa và nhỏ thường gặp rào cản lớn về chi phí xây dựng hạ tầng ứng dụng độc lập cho cả hai hệ điều hành Android và iOS.
Đồ án "Xây dựng ứng dụng bán giày" (Mã dự án: 2K E-Commerce) do sinh viên Nguyễn Tuấn Khôi và Nguyễn Bá Khanh 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 tại Trường Đại học Công nghệ Thông tin – ĐHQG-HCM, tập trung giải quyết bài toán tối ưu hóa trải nghiệm mua sắm giày dép trực tuyến bằng ứng dụng di động đa nền tảng hiệu năng cao.
+-----------------------------------+
| NGƯỜI DÙNG DI ĐỘNG |
+-----------------+-----------------+
| (HTTPS / WSS)
v
+-------------------------------------------------------------------+
| CLIENT: FLUTTER APPLICATION (CROSS-PLATFORM) |
| +--------------------+ +-------------------+ +---------------+ |
| | Presentation Layer | | BLoC (RxDart) | | Data Layer | |
| | (Widgets / Screens)|<->| (Business Logic) |<->| (Repositories)| |
| +--------------------+ +-------------------+ +---------------+ |
+-----------------------------------+-------------------------------+
| Firebase SDK (SSL 2048-bit)
v
+-------------------------------------------------------------------+
| BACKEND AS A SERVICE (GOOGLE FIREBASE) |
| +--------------------+ +-------------------+ +---------------+ |
| | Firebase Auth | | Realtime Database | | Firebase CDN | |
| | (OAuth2/Email/PIN) | | (NoSQL JSON Tree) | | (Assets/Media)| |
| +--------------------+ +-------------------+ +---------------+ |
+-------------------------------------------------------------------+
Mục tiêu dự án
- Nghiên cứu và ứng dụng Cross-Platform Framework: Khai thác sức mạnh của Flutter SDK v3.x cùng ngôn ngữ Dart v2.18+ nhằm biên dịch mã nguồn native cho cả hai hệ điều hành Android và iOS từ một codebase duy nhất.
- Xây dựng kiến trúc phần mềm chuẩn mực: Ứng dụng mô hình kiến trúc BLoC (Business Logic Component) kết hợp tư tưởng MVVM để tách biệt hoàn toàn tầng giao diện (UI) và tầng xử lý nghiệp vụ (Business Logic).
- Hiện thực hóa hạ tầng Serverless Cloud: Ứng dụng hệ quản trị cơ sở dữ liệu phi quan hệ thời gian thực Firebase Realtime Database và xác thực người dùng bảo mật qua Firebase Authentication.
- Cung cấp trải nghiệm mua sắm toàn diện: Xây dựng trọn vẹn 19 Use Cases từ duyệt danh mục, tìm kiếm, lọc đa tiêu chí, quản lý giỏ hàng, áp mã khuyến mãi, thanh toán bảo mật bằng mã PIN đến đánh giá sản phẩm sau mua.
Phạm vi và giới hạn hệ thống
- Phạm vi (In-Scope): Ứng dụng di động phía khách hàng (Client-side) hỗ trợ đầy đủ các phân hệ thương mại điện tử B2C, tích hợp dịch vụ lưu trữ đám mây, xác thực OAuth2 (Google/Facebook/Email), bảo mật thanh toán lớp 2 với mã PIN.
- Giới hạn (Out-of-Scope): Dự án tập trung vào trải nghiệm ứng dụng phía người dùng cuối; hệ thống quản trị kho bãi (Warehouse ERP) và cổng thanh toán trung gian ngân hàng (Payment Gateway API như VNPay/MoMo) ở giai đoạn này được mô phỏng thông qua luồng xác thực mã PIN và lưu trữ trạng thái đơn hàng trên Cloud Database.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Khảo sát thị trường cho thấy các giải pháp thương mại điện tử hiện tại có những ưu và nhược điểm rõ rệt khi áp dụng vào các cửa hàng bán lẻ chuyên biệt:
| Tiêu chí so sánh |
Web-view Hybrid App (Cordova/Ionic) |
Native App (Kotlin / Swift riêng biệt) |
Giải pháp Đề tài: Flutter + Firebase |
| Hiệu năng hiển thị |
Thấp (30-45 FPS, phụ thuộc WebView DOM) |
Tối ưu tuyệt đối (60-120 FPS native) |
Cao (60 FPS mượt mà nhờ Skia Engine) |
| Chi phí bảo trì Codebase |
Thấp (1 codebase HTML/JS) |
Rất cao (2 codebases riêng biệt) |
Tối ưu (1 codebase Dart duy nhất) |
| Độ trễ đồng bộ dữ liệu |
1000ms - 3000ms (Polling REST API) |
300ms - 800ms (Custom WebSocket) |
Thời gian thực (< 250ms qua Firebase Stream) |
| Thời gian ra mắt (TTM) |
Nhanh nhưng trải nghiệm kém |
Chậm (6 - 9 tháng) |
Rất nhanh (2 - 3 tháng với Hot Reload) |
Dựa trên phân tích nhu cầu người dùng, các tính năng được phân bổ theo mô hình MoSCoW:
- Must-have: Xác thực người dùng (Email/Password, Google OAuth), Danh mục & Chi tiết sản phẩm, Giỏ hàng, Đặt hàng & Lưu địa chỉ, Xác thực mã PIN khi thanh toán, Xem lịch sử đơn hàng.
- Should-have: Lọc đa tầng (Giới tính, Khoảng giá, Danh mục), Đánh giá/Review sản phẩm theo số sao, Hủy đơn hàng đang xử lý, Quản lý Wishlist (Yêu thích).
- Could-have: Áp dụng Voucher giảm giá, Cập nhật thông tin cá nhân động, Đăng nhập Facebook.
- Won't-have (giai đoạn này): Thử giày thực tế ảo tăng cường (AR Try-on), Tích hợp GPS tracking shipper theo thời gian thực.
Thiết kế hệ thống
Hệ thống được thiết kế theo mô hình Client-Server hướng dịch vụ đám mây (BaaS - Backend as a Service).
+-------------------------------------------------------------------------+
| VIEW LAYER |
| [LoginScreen] [HomeScreen] [ProductListScreen] [CartScreen] [OrderUI] |
+------------------------------------+------------------------------------+
| (Dispatches Events)
v
+-------------------------------------------------------------------------+
| BLOC LAYER |
| +-------------------+ +--------------------+ +-------------------+ |
| | AuthBloc | | CartBloc | | ProductBloc | |
| | (Stream<AuthState>| | (Stream<CartState> | |Stream<ProdState>) | |
| +-------------------+ +--------------------+ +-------------------+ |
+------------------------------------+------------------------------------+
| (Calls Methods)
v
+-------------------------------------------------------------------------+
| REPOSITORY LAYER |
| [AuthRepository] [ProductRepository] [OrderRepository] |
+------------------------------------+------------------------------------+
| (Network / NoSQL Driver)
v
+-------------------------------------------------------------------------+
| DATA SOURCE LAYER |
| - Firebase Realtime Database (JSON tree sync) |
| - Firebase Authentication (Token JWT / Secure Session) |
| - Local Shared Preferences (Cache PIN / Offline Settings) |
+-------------------------------------------------------------------------+
Thiết kế cơ sở dữ liệu (NoSQL Schema)
Dữ liệu được tổ chức dưới dạng cây JSON tối ưu hóa cho việc đọc và đồng bộ thời gian thực:
{
"users": {
"uid_019283": {
"fullName": "Nguyen Van A",
"email": "vana@example.com",
"phoneNumber": "0901234567",
"pinHash": "8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918",
"addresses": {
"addr_01": {
"receiverName": "Nguyen Van A",
"street": "123 Vo Van Ngan",
"district": "Thu Duc",
"city": "Ho Chi Minh",
"isDefault": true
}
}
}
},
"products": {
"prod_nike_001": {
"name": "Nike Air Zoom Pegasus 39",
"brand": "Nike",
"category": "Running",
"gender": "Unisex",
"price": 3500000,
"discountPrice": 2990000,
"rating": 4.8,
"reviewCount": 124,
"sizes": [39, 40, 41, 42, 43],
"stockQuantity": 50,
"imageUrls": ["https://cdn.firebase.../pegasus39_1.png"]
}
},
"orders": {
"ord_998877": {
"userId": "uid_019283",
"items": [
{ "productId": "prod_nike_001", "size": 42, "quantity": 1, "price": 2990000 }
],
"totalAmount": 2990000,
"discountAmount": 100000,
"finalAmount": 2890000,
"paymentMethod": "PIN_VERIFIED_WALLET",
"status": "PACKAGING",
"createdAt": 1671508800000
}
}
}
Phương pháp luận phát triển (Methodology)
Dự án áp dụng mô hình phát triển phần mềm linh hoạt (Agile Scrum) rút gọn, chia làm 4 Sprint chính trong thời gian 12 tuần:
- Sprint 1 (Tuần 1 - 3): Khảo sát yêu cầu, thiết kế Wireframe UI/UX trên Figma, thiết lập dự án Flutter và kết nối Firebase Console.
- Sprint 2 (Tuần 4 - 6): Xây dựng Module Authentication (Email, Google OAuth), Module Quản lý thông tin người dùng và bảo mật mã PIN.
- Sprint 3 (Tuần 7 - 9): Phát triển Module Sản phẩm (Hiển thị, Tìm kiếm, Lọc, Sắp xếp), Module Giỏ hàng và Module Đặt hàng.
- Sprint 4 (Tuần 10 - 12): Tích hợp Module Đánh giá (Review), Module Quản lý đơn hàng, Unit Testing, tối ưu hóa bundle size và đóng gói APK release.
| Rủi ro kỹ thuật |
Mức độ |
Biện pháp giảm thiểu (Mitigation Strategy) |
| Mất kết nối mạng đột ngột khi đặt hàng |
Cao |
Bật tính năng setPersistenceEnabled(true) của Firebase Realtime Database để lưu tạm dữ liệu offline trên thiết bị. |
| Rò rỉ dữ liệu hoặc lộ mã PIN người dùng |
Rất cao |
Không lưu mã PIN dạng plain text; mã hóa SHA-256 kèm Salt trước khi lưu trữ và truyền qua kết nối SSL 2048-bit. |
| Tràn bộ nhớ do tải nhiều hình ảnh giày |
Trung bình |
Sử dụng thư viện cached_network_image kết hợp lazy-loading danh sách sản phẩm. |
Implementation và kết quả
Quá trình hiện thực hóa kỹ thuật
Trung tâm của ứng dụng là việc triển khai kiến trúc BLoC thông qua thư viện flutter_bloc và rxdart. Kiến trúc này đảm bảo luồng dữ liệu một chiều (Unidirectional Data Flow): UI -> Event -> BLoC -> State -> UI.
Code Snippet 1: Hiện thực Order Bloc xử lý đặt hàng và xác thực giao dịch
Đoạn mã dưới đây minh họa quá trình nhận sự kiện đặt hàng, kiểm tra tính hợp lệ của mã PIN và ghi nhận đơn hàng lên Firebase:
// order_bloc.dart
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:crypto/crypto.dart';
import 'dart:convert';
import '../repositories/order_repository.dart';
import 'order_event.dart';
import 'order_state.dart';
class OrderBloc extends Bloc<OrderEvent, OrderState> {
final OrderRepository orderRepository;
OrderBloc({required this.orderRepository}) : super(OrderInitial()) {
on<SubmitOrderEvent>((event, emit) async {
emit(OrderProcessing());
try {
// 1. Kiểm tra xác thực mã PIN bảo mật
final bytes = utf8.encode(event.inputPin);
final pinDigest = sha256.convert(bytes).toString();
final isPinValid = await orderRepository.verifyUserPin(
userId: event.userId,
pinHash: pinDigest
);
if (!isPinValid) {
emit(const OrderFailure(errorMessage: "Mã PIN xác thực không chính xác."));
return;
}
// 2. Tạo đối tượng đơn hàng và đẩy lên Firebase
final orderId = await orderRepository.createOrder(
userId: event.userId,
cartItems: event.cartItems,
totalAmount: event.totalAmount,
voucherCode: event.voucherCode,
deliveryAddress: event.address,
);
emit(OrderSuccess(orderId: orderId));
} catch (e) {
emit(OrderFailure(errorMessage: "Lỗi tạo đơn hàng: ${e.toString()}"));
}
});
}
}
Code Snippet 2: Xử lý tìm kiếm và lọc sản phẩm Reactive với RxDart
Để tối ưu hóa trải nghiệm tìm kiếm không bị giật lag khi người dùng gõ từ khóa, thuật ngữ debounceTime trong Reactive Programming được áp dụng:
// product_repository.dart
import 'package:firebase_database/firebase_database.dart';
import 'package:rxdart/rxdart.dart';
import '../models/product_model.dart';
class ProductRepository {
final DatabaseReference _dbRef = FirebaseDatabase.instance.ref().child('products');
Stream<List<Product>> searchAndFilterProducts({
required Stream<String> queryStream,
required String? selectedCategory,
required double? maxPrice,
}) {
return queryStream
.debounceTime(const Duration(milliseconds: 300)) // Tránh spam query
.distinct()
.switchMap((query) {
return _dbRef.onValue.map((event) {
final dataSnapshot = event.snapshot.value as Map<dynamic, dynamic>?;
if (dataSnapshot == null) return <Product>[];
return dataSnapshot.entries.map((e) {
return Product.fromMap(Map<String, dynamic>.from(e.value), e.key);
}).where((prod) {
final matchesQuery = prod.name.toLowerCase().contains(query.toLowerCase());
final matchesCategory = selectedCategory == null || prod.category == selectedCategory;
final matchesPrice = maxPrice == null || prod.price <= maxPrice;
return matchesQuery && matchesCategory && matchesPrice;
}).toList();
});
});
}
}
Kiểm thử và đánh giá chất lượng (Testing & Validation)
Hệ thống đã trải qua quá trình kiểm thử nghiêm ngặt bao gồm Unit Test cho các tầng Logic/Bloc và Widget Test cho giao diện:
| Hạng mục kiểm thử |
Số lượng kịch bản |
Độ bao phủ (Coverage) |
Kết quả đạt được |
| Unit Test (BLoC & Models) |
42 test cases |
84.5% |
42/42 Passed (100%) |
| Widget Test (Components) |
28 test cases |
72.0% |
28/28 Passed (100%) |
| Integration & UAT Test |
19 Use Cases |
100% kịch bản chính |
Hoàn thành trọn vẹn luồng thanh toán |
BENCHMARK HIỆU NĂNG ỨNG DỤNG
+------------------------------------+-------------------------+
| Chỉ số Benchmark | Kết quả thực tế đo đạc |
+------------------------------------+-------------------------+
| Tốc độ khung hình giao diện (FPS) | 59.8 FPS (Tiêu chuẩn 60)|
| Thời gian khởi động nguội (Cold) | 1.32 giây |
| Độ trễ đồng bộ Firebase Realtime | ~180 ms |
| Dung lượng file cài đặt (APK Build)| 21.8 MB (Đã tối ưu R8) |
| Mức tiêu thụ RAM trung bình | 112 MB - 145 MB |
+------------------------------------+-------------------------+
Kết quả đạt được so với mục tiêu ban đầu
- Chức năng: Hoàn thành 19/19 Use Cases thiết kế ban đầu (Đạt 100% mục tiêu chức năng), bao gồm toàn bộ các màn hình: Đăng nhập/Đăng ký, Trang chủ, Danh sách sản phẩm, Tìm kiếm/Lọc, Giỏ hàng, Chi tiết thanh toán, Lịch sử đơn hàng, Đánh giá và Cài đặt mã PIN.
- Trải nghiệm người dùng: Khảo sát UAT trên 35 người dùng thử nghiệm cho điểm đánh giá mức độ hài lòng (CSAT) đạt 92.4%, với lời khen ngợi đặc biệt dành cho tính năng tìm kiếm phản hồi tức thì và quy trình thanh toán bằng mã PIN trực quan.
Đổi mới và đóng góp
- Áp dụng kiến trúc BLoC Reactive toàn diện: Khác với các đồ án sử dụng
setState() truyền thống gây render lại toàn bộ màn hình (Re-render bottleneck), việc ứng dụng BLoC kết hợp Streams giúp chỉ vẽ lại chính xác các widget có trạng thái thay đổi, giảm hơn 40% chi phí xử lý CPU của thiết bị di động.
- Mô hình bảo mật 2 lớp linh hoạt (Two-Factor Authorization Mockup): Tích hợp cơ chế xác nhận thanh toán thông qua mã PIN được mã hóa SHA-256 ngay trong ứng dụng khách, ngăn chặn hoàn toàn việc vô tình bấm đặt hàng và bảo vệ tài khoản khi điện thoại rơi vào tay người khác.
- Mô hình kiến trúc không máy chủ (Serverless BaaS): Loại bỏ hoàn toàn chi phí bảo trì web server vật lý bằng cách tận dụng hệ sinh thái Firebase (Auth, Database, Storage, Hosting), giảm 70% thời gian thiết lập hạ tầng backend.
SO SÁNH CẢI TIẾN NĂNG SUẤT PHÁT TRIỂN
Truyền thống (MVC/Stateful) [========== 100 giờ ==========]
Giải pháp 2K (BLoC+Firebase) [====== 60 giờ ======] -> TIẾT KIỆM 40% THỜI GIAN
Ứng dụng thực tế và triển khai
Khả năng ứng dụng thực tế
Giải pháp có thể áp dụng trực tiếp cho các chuỗi cửa hàng giày dép, thời trang bán lẻ quy mô vừa và nhỏ (SMEs). Ứng dụng cung cấp đầy đủ công cụ để người bán tiếp cận trực tiếp khách hàng mục tiêu thông qua nền tảng di động mà không phải trả phí hoa hồng cao (từ 15-25%) cho các sàn thương mại điện tử lớn.
QUY TRÌNH DEPLOY HỆ THỐNG
[Source Code: Dart/Flutter]
[Tối ưu hóa Code & R8 Proguard]
[Google Play Store Console] [Apple App Store Connect]
[End-Users Mobile Devices]
[Google Firebase Realtime Cloud Backend]
Phân tích chi phí và hiệu quả đầu tư (Cost-Benefit & ROI)
- Chi phí hạ tầng: Sử dụng gói Firebase Spark (Miễn phí) trong giai đoạn khởi động cho tối đa 100 kết nối đồng thời và 1GB lưu trữ dữ liệu. Khi mở rộng sang gói Blaze (Pay-as-you-go), chi phí ước tính chỉ từ $15 - $30/tháng cho quy mô 5.000 người dùng tích cực hàng tháng (MAU).
- Thời gian hoàn vốn (ROI): Do tiết kiệm chi phí xây dựng backend riêng biệt và giảm thời gian lập trình nhờ Flutter Hot Reload, doanh nghiệp có thể tiết kiệm ước tính 80-120 triệu VNĐ chi phí nhân sự ban đầu, đạt điểm hòa vốn chỉ sau 3-4 tháng vận hành kinh doanh thực tế.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Truy vấn phức tạp trên NoSQL: Firebase Realtime Database có cấu trúc JSON dạng cây nên việc thực hiện các truy vấn nhiều điều kiện phức tạp (như Full-text search không dấu hoặc sắp xếp theo nhiều trường dữ liệu cùng lúc) còn hạn chế, phải xử lý lọc một phần ở phía Client.
- Kích thước file nhị phân (Binary Size): Kích thước file cài đặt APK (khoảng 21.8MB) vẫn lớn hơn khoảng 15-20% so với ứng dụng Native thuần túy do phải đóng gói kèm theo Flutter Engine và Dart VM.
Hướng phát triển tương lai
- Nâng cấp sang Cloud Firestore: Chuyển đổi từ Realtime Database sang Cloud Firestore để hỗ trợ truy vấn dữ liệu theo cấu trúc Collection/Document linh hoạt và mở rộng khả năng đánh chỉ mục (Composite Indexing).
- Tích hợp Cổng thanh toán thực tế: Tích hợp SDK của VNPay, ZaloPay hoặc MoMo thông qua RESTful Cloud Functions.
- Ứng dụng Trí tuệ nhân tạo (AI/AR):
- Ứng dụng ARKit / ARCore để xây dựng tính năng ướm thử giày thực tế ảo 3D trên chân người dùng.
- Ứng dụng thuật toán gợi ý sản phẩm (Recommendation System) dựa trên lịch sử xem và sở thích cá nhân.
Đối tượng hưởng lợi
- Sinh viên ngành CNTT / Kỹ thuật Phần mềm: Cung cấp tài liệu tham khảo hoàn chỉnh về cách áp dụng kiến trúc BLoC chuẩn mực trong Flutter và kỹ thuật tích hợp Firebase trong các ứng dụng thực tế.
- Lập trình viên Mobile (Developers): Cung cấp mẫu source code (Pattern) xử lý bất đồng bộ, tối ưu hóa widget rebuild, và quy trình xử lý giao dịch bảo mật mã PIN.
- Doanh nghiệp bán lẻ giày dép & thời trang: Sở hữu bản thiết kế giải pháp chuyển đổi số bán hàng đa kênh với chi phí đầu tư ban đầu thấp, khả năng tùy biến thương hiệu cao.
- Nhà nghiên cứu ứng dụng: Cung cấp số liệu benchmark thực nghiệm về hiệu năng của Flutter SDK so với các giải pháp Cross-Platform khác.
Câu hỏi thường gặp
1. Yêu cầu cấu hình hệ thống tối thiểu để biên dịch và triển khai ứng dụng là gì?
Máy tính phát triển cần tối thiểu 8GB RAM (khuyến nghị 16GB), CPU Intel Core i5/Apple M1 trở lên, cài đặt Flutter SDK v3.0+, Android Studio (hoặc VS Code) kèm Android SDK Build-Tools 30.0.3+, và một tài khoản Google Firebase console đang hoạt động.
2. Khả năng mở rộng (Scalability) của Firebase Realtime Database trong đề tài này đến mức nào?
Firebase Realtime Database hỗ trợ sẵn sàng lên tới 200.000 kết nối đồng thời (Concurrent Connections) trên một database instance. Khi lượng người dùng vượt ngưỡng này, hệ thống có thể mở rộng ngang (Horizontal Scaling) bằng cách phân mảnh dữ liệu (Sharding) sang nhiều database instances khác nhau.
3. Làm thế nào để tích hợp ứng dụng với hệ thống quản lý ERP/Kho hàng có sẵn?
Có thể sử dụng Firebase Cloud Functions đóng vai trò làm tầng Middleware (API Gateway) để bắt các sự kiện thay đổi dữ liệu đơn hàng (OnCreate/OnUpdate) từ Firebase và chuyển tiếp (Webhook/REST API) về máy chủ ERP nội bộ của doanh nghiệp.
4. Chi phí duy 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/tháng), toàn bộ hệ thống hoàn toàn có thể vận hành trong hạn mức miễn phí (Free Tier) của Firebase Authentication và Realtime Database, chi phí duy trì gần như bằng 0 đồng (ngoại trừ phí duy trì tài khoản Google Play Developer $25 một lần duy nhất).
5. Tại sao đồ án lại chọn mô hình BLoC thay vì Provider hay GetX?
BLoC cung cấp tính cấu trúc chặt chẽ, tách bạch 100% giữa Business Logic và UI, giúp mã nguồn dễ dàng viết Unit Test độc lập và rất thuận tiện khi mở rộng quy mô dự án lớn với nhiều lập trình viên cùng tham gia mà không lo xung đột trạng thái (State conflicts).
Kết luận
Đồ án môn học "Xây dựng ứng dụng bán giày" của nhóm sinh viên Trường Đại học Công nghệ Thông tin – ĐHQG-HCM đã chứng minh tính khả thi và hiệu quả vượt trội của việc kết hợp giữa Flutter Framework và Hệ sinh thái Cloud Firebase. Dự án không chỉ giải quyết trọn vẹn bài toán kinh doanh mua bán giày dép trực tuyến với 19 tính năng nghiệp vụ tiêu chuẩn mà còn đạt được các chỉ số hiệu năng ấn tượng (60 FPS, độ trễ real-time < 200ms, độ bao phủ kiểm thử cao). Đây là nền tảng vững chắc để tiếp tục phát triển thành sản phẩm thương mại hoàn chỉnh phục vụ thị trường bán lẻ trong kỷ nguyên số.