Nguyen Van Quang Huy

Fullstack Developer

0%

Scan to Order

Bài toán và phạm vi

Scan to Order là nền tảng gọi món bằng mã QR và số hóa quy trình vận hành toàn diện cho chuỗi nhà hàng F&B nhiều chi nhánh dưới một thương hiệu chung (Multi-tenant & Multi-branch Architecture). Hệ thống được triển khai thực tế trên môi trường Render, phục vụ từ quán ăn gia đình đến các chuỗi F&B có cấu trúc phân cấp phức tạp.

Khác biệt với các ứng dụng đơn chi nhánh thông thường, hệ thống tổ chức mô hình dữ liệu đa tầng: Thương hiệu/Tổ chức (organizations) quản lý tập trung danh mục và chính sách, trong khi từng Chi nhánh (branches) sở hữu thực đơn đặc thù, bảng giá, kho bàn ăn và đội ngũ nhân sự riêng biệt. Mỗi lượt khách ngồi tại bàn được cấp mã định danh tableId và sessionId độc nhất, cô lập hoàn toàn giỏ hàng, đơn món và lịch sử chat theo phiên (Session Isolation), tự động giải phóng bàn sau 40 phút không hoạt động để bảo mật tuyệt đối cho lượt khách kế tiếp.

Cách sản phẩm hoạt động

Khách hàng quét mã QR tại bàn của chi nhánh để mở thực đơn điện tử trên trình duyệt di động mà không cần cài đặt app. Thực khách có thể duyệt món, tùy biến định lượng (đường, đá, size, topping), ghi chú gửi bếp và theo dõi tiến độ món ăn theo thời gian thực (Đã xác nhận → Đang nấu → Sẵn sàng → Đã phục vụ). Khách hàng có thể tương tác với Trợ lý ẩm thực Bé Bảy AI (sử dụng Qdrant vector database và mô hình nhúng BGE-M3) để hỏi đáp thành phần món, cảnh báo dị ứng, tính calo, nhận gợi ý theo ngân sách và bấm Quick Order thêm món trực tiếp ngay trong cửa sổ chat hoặc gửi tín hiệu SOS gọi nhân viên đến bàn.

Về mặt vận hành, hệ thống đồng bộ tức thời 4 nhóm vai trò: Waiter điều hành sơ đồ bàn kéo thả, gộp bàn, chuyển bàn và phục vụ món; Đầu bếp (Chef) tiếp nhận đơn trên Kitchen Display System (KDS) với âm thanh chuông báo đơn mới; Quản trị viên/Quản lý chi nhánh (Manager & Owner) phân bổ ca kíp qua staff_branch_assignments, điều chỉnh cài đặt cửa hàng linh hoạt (store_settings với cơ chế kế thừa 3 cấp: organization, branch, legacy) và theo dõi báo cáo doanh thu đa chiều theo từng cơ sở.

Tại khâu thanh toán, hệ thống tự động sinh mã VietQR động theo tổng giá trị đơn hàng thực tế; webhook của SePay lập tức ghi nhận giao dịch chuyển khoản ngân hàng theo thời gian thực, đối soát tự động, ghi nhận điểm loyalty CRM cho khách hàng thân thiết và phát tín hiệu giải phóng phiên bàn ngay khi đơn hoàn tất.

Điểm đáng chú ý

Kiến trúc Chuỗi F&B Multi-Branch. Mô hình đa chi nhánh chung thương hiệu, phân quyền Owner/Manager/Chef/Waiter theo cơ sở và thừa kế cấu hình store_settings phân tầng.

Session Isolation & Concurrency Guard. Cô lập tuyệt đối phiên bàn 40 phút timeout, phòng Socket.io riêng biệt và khóa lạc quan PostgreSQL chống xung đột đặt món, gộp bàn.

Trợ lý RAG Bé Bảy & VietQR SePay. AI tư vấn món chính xác với Qdrant và BGE-M3, webhook SePay tự động đối soát giao dịch ngân hàng theo thời gian thực và giải phóng bàn.

Quyết định kỹ thuật

Frontend xây dựng trên React 19 + Vite 7 kết hợp Tailwind CSS 3.4 và các component chuẩn của shadcn/ui, mang lại giao diện di động phản hồi cực nhanh. Trạng thái ứng dụng được phân vùng rõ ràng bằng Zustand (tách biệt cartStore và customerStore) và TanStack React Query 5 cho cache dữ liệu menu. Sơ đồ bàn kéo thả được vận hành mượt mà bằng @dnd-kit/core.

Backend phát triển trên Node.js với Express 5 và cơ sở dữ liệu quan hệ PostgreSQL ≥ 14. Hệ thống áp dụng mô hình dữ liệu Multi-tenant với khóa ngoại phân tầng (organization_id và branch_id) trên toàn bộ các bảng nghiệp vụ cốt lõi (categories, products, tables, orders, order_items, service_requests, store_settings). Toàn vẹn giao dịch ACID và cơ chế khóa lạc quan (Optimistic Concurrency Control) triệt tiêu hoàn toàn rủi ro xung đột dữ liệu khi nhiều khách cùng bàn gọi món đồng thời trong lúc bồi bàn thực hiện gộp hoặc chuyển bàn.

Hạ tầng Socket.io 4 phân tách phòng sự kiện theo từng chi nhánh và phiên bàn (branch_{id} và table_{tableId}_{sessionId}), đảm bảo thông báo chỉ phát đúng đối tượng mà không lãng phí băng thông. Trợ lý Bé Bảy AI áp dụng kiến trúc RAG có kiểm soát: ưu tiên DB-first Menu QA từ PostgreSQL để triệt tiêu hallucination, kết hợp derived index Qdrant và chuỗi provider fallback (Groq, Cerebras, Z.AI, Gemini, OpenRouter, Ollama) với Zero-Trust Action Guard bảo vệ nghiêm ngặt mọi hành động nhạy cảm.

Công nghệ sử dụng: React 19, Express 5, PostgreSQL, Socket.io, Qdrant, BGE-M3, Cloudinary, SePay, Multi-tenant.

Ghi chú triển khai

Mã nguồn được tái cấu trúc qua 6 giai đoạn công nghệ phần mềm bài bản, nâng cấp thành công từ kiến trúc Single-branch sơ khai lên hệ thống Multi-branch cấp doanh nghiệp. Quá trình di chuyển dữ liệu (database migration) được thiết kế tương thích ngược thông qua các script an toàn (ALTER TABLE ... ADD COLUMN IF NOT EXISTS) cho phép hệ thống vận hành liên tục không gián đoạn (zero-downtime).

Đội ngũ kỹ thuật đã giải quyết bài toán phức tạp về phân cấp quyền lực (RBAC) cho chuỗi nhà hàng: chuyển đổi vai trò Admin chung chung thành hệ thống Owner và Manager theo từng chi nhánh cụ thể, kết hợp bảng staff_branch_assignments và cấu hình store_settings phân tầng cho phép từng chi nhánh override các chính sách chung mà không làm vỡ logic toàn hệ thống.

Scan to Order product view 1
Scan to Order product view 2
Scan to Order product view 3
Scan to Order product view 4
Scan to Order product view 5
Scan to Order mobile view 6
Scan to Order mobile view 7
Scan to Order mobile view 8
Scan to Order mobile view 9
Scan to Order mobile view 10
Scan to Order mobile view 11
Scan to Order mobile view 12
Scan to Order mobile view 13
Scan to Order mobile view 14
Scan to Order mobile view 15
Scan to Order mobile view 16
Scan to Order product view 17

Hãy cùng tạo nên

những sản phẩm đột phá

và ấn tượng!

Sẵn sàng khởi động dự án cùng bạn ngay hôm nay. Mình nhận các vị trí full-time, thực tập hoặc freelance, làm việc trực tiếp tại TP.HCM hoặc từ xa. Bạn có thể liên hệ nhanh qua số 0906 624 786 (gọi điện hoặc Zalo) hoặc gửi email về nguyen.van.quang.huy.2105@gmail.com.

Nguyen Van Quang Huy - Ready to collaborate