SaaS
Đang vận hành

Spark Store — nền tảng quản lý cửa hàng bán lẻ (Web · iOS · Android)

Spark Store gom bán hàng, kho, ca làm, chấm công khuôn mặt, lương và thu chi của một cửa hàng bán lẻ vào một hệ thống, gồm web quản trị, app iOS/Android cho nhân viên và trang bán hàng riêng có trợ lý AI. Hệ thống khởi đầu là phần mềm nội bộ của CiCi 21 Chùa Láng và nay đã chạy được nhiều cửa hàng.

Kiến trúc sư & lập trình viên chính

cici21chualang.vnCửa hàng mẫu
Spark Store — nền tảng quản lý cửa hàng bán lẻ (Web · iOS · Android)

2

Brand đang vận hành

20+

Người dùng

176

Tool AI qua MCP

Web · iOS · Android

Nền tảng

Vấn đề

CiCi 21 Chùa Láng là cửa hàng phụ kiện thời trang nữ ở Hà Nội. Đơn hàng đã nằm trên KiotViet, còn ca làm, chấm công, lương, lịch vệ sinh kho và thu chi vẫn làm bằng Excel và sổ tay. Cuối tháng phải mất nhiều buổi để tính lương. Mặt hàng sắp hết hay đơn bị lệch thường chỉ được phát hiện khi đã muộn.

Spark Store được viết để xử lý đúng những việc đó. Sau khi chạy ổn ở CiCi, hệ thống được tách thành nền tảng để cửa hàng khác dùng chung hạ tầng mà vẫn có thương hiệu và dữ liệu riêng.

Storefront của CiCi 21 Chùa Láng chạy trên Spark Store
Storefront của CiCi 21 Chùa Láng chạy trên Spark Store

Ai dùng, dùng ở đâu

Người dùngNền tảngCông việc chính
Chủ cửa hàngWeb quản trị và appDoanh thu, lãi lỗ, giá vốn, lương, cổ đông, cấu hình cửa hàng, trợ lý AI
Quản lýWeb và appXếp và duyệt ca, kiểm kho, nhập hàng, duyệt công
Nhân viênApp iOS/AndroidChấm công, đăng ký và đổi ca, xem lương, bán hàng tại quầy, kiểm quầy
Khách hàngTrang bán hàng (web)Xem sản phẩm, hỏi trợ lý AI về hàng và tồn kho, đặt hàng khi cửa hàng mở bán online
Người vận hành nền tảngSpark ConsoleTạo cửa hàng, gắn tên miền, chọn gói, đặt thương hiệu, xem nhật ký

Tính năng

Nhân sự và ca làm

  • Mẫu ca và lịch làm theo tuần. Nhân viên tự đăng ký ca, quản lý duyệt.
  • Chợ ca: nhả ca, nhận ca, đổi ca và "làm hộ một phần" khi đồng nghiệp đến muộn.
  • Chấm công bằng khuôn mặt, GPS trong bán kính cửa hàng hoặc kiosk ghép cặp tại quầy. Có lịch sử và nhật ký kiểm tra ca.
  • Lịch vệ sinh kho dựng theo mẫu và nhân bản được theo tuần. Nhân viên đánh dấu hoàn thành, quản lý duyệt, việc bỏ sót bị ghi phạt.

Lương

  • Kỳ lương tự chốt, có chính sách phạt, ngày lễ và cấu hình lương theo từng người.
  • Nhân viên xem lương tạm tính ngay trên app.

Bán hàng

  • POS trên web và trên app: nhiều đơn nháp cùng lúc, tìm theo mã vạch, chọn biến thể.
  • Nhân viên bán đúng giá niêm yết. Chỉ quản lý được sửa giá, giảm giá hoặc sửa hoá đơn.
  • Đơn bán, trả hàng, mã giảm giá, chương trình khuyến mãi, voucher đối tác.
  • Thanh toán QR động, ngân hàng báo có thì đơn tự xác nhận.

Kho và mua hàng

  • Hàng hoá, đơn vị tính, nhà cung cấp, đơn nhập, trả hàng nhập, kiểm kho, phiếu hư hỏng và phiếu dùng nội bộ.
  • Cảnh báo hàng sắp hết, chỉ tính hàng đang bán dưới định mức.
  • Chủ cửa hàng chỉnh tồn ngay trên app, phiếu chỉnh được đẩy sang KiotViet.

Tài chính

  • Phiếu thu chi, quỹ tiền mặt, chi phí, kiểm quầy theo ca.
  • Quản lý cổ đông, quyết toán, báo cáo thuế và chi phí.

Giao tiếp

  • Chat nội bộ theo thời gian thực, thông báo đẩy trên app và qua Telegram.

Mỗi cửa hàng bật hoặc tắt phân hệ theo gói dịch vụ. Hiện có 11 nhóm tính năng: chấm công, xếp ca, vệ sinh, lương, phạt, POS, kho, đồng bộ KiotViet, chatbot, trang chủ storefront và trợ lý AI. Ngoài gói, có thể bật riêng từng tính năng cho một cửa hàng.

App Spark Store

Cửa hàng mẫu trên nền tảng: cùng hệ thống, tên miền và thương hiệu riêng
Cửa hàng mẫu trên nền tảng: cùng hệ thống, tên miền và thương hiệu riêng
  • App viết bằng React Native (Expo, expo-router, NativeWind). Một mã nguồn build ra hai bản: app CiCi và app Spark Store dùng chung cho các cửa hàng SaaS. Bản Spark Store đang được đưa lên App Store.
  • Người dùng mở app, nhập mã hoặc link cửa hàng rồi đăng nhập bằng Apple, Google hoặc email. Sau khi đăng nhập, giao diện đổi theo màu thương hiệu của cửa hàng đó.
  • Phiên đăng nhập gắn với từng thiết bị và tự gia hạn 30 ngày. Khi mất mạng, app không đăng xuất người dùng.
  • Quyền xem dữ liệu khác nhau theo vai trò. Giá vốn chỉ chủ và quản lý thấy. Nhân viên chỉ mở được hoá đơn mình bán trong ngày. Muốn vào màn kiểm quầy, nhân viên phải có ca hôm nay và đang đứng ở cửa hàng.
  • App có tiếng Anh và tiếng Việt, cập nhật OTA qua EAS Update.

Trợ lý AI và MCP

Trợ lý AI trên storefront: tra sản phẩm, kiểm tra tồn kho, hỏi đáp 24/7
Trợ lý AI trên storefront: tra sản phẩm, kiểm tra tồn kho, hỏi đáp 24/7
  • MCP cho từng cửa hàng. Mỗi cửa hàng có /api/mcp (Streamable HTTP) với 176 tool: lương, ca, chấm công, đơn, kho, POS, thu chi, cổ đông, báo cáo. Chủ cửa hàng tạo khoá API theo quyền để nối Claude, Cursor hoặc agent riêng vào dữ liệu thật của cửa hàng.
  • Ghi dữ liệu phải xác nhận. Ở lần gọi đầu, thao tác ghi quan trọng chỉ mô tả việc sẽ làm. Agent phải gửi lại với confirm: true thì thao tác mới chạy. Mọi phiên và lời gọi được lưu nhật ký 90 ngày.
  • Trợ lý trong app dành cho chủ cửa hàng và quản lý. Trợ lý chỉ đọc dữ liệu: mỗi lần hỏi, hệ thống cấp một khoá ngắn hạn có quyền đọc theo vai trò người hỏi, rồi gọi đúng các tool MCP ở trên. Vì vậy trợ lý không có quyền riêng nào ngoài quyền của người hỏi. Câu trả lời được stream về app qua SignalR.
  • Trợ lý trên trang bán hàng trả lời khách 24/7 về sản phẩm, tồn kho và thông tin cửa hàng.

Kiến trúc

  • Đa cửa hàng. Tenant được xác định theo host của request. Tên miền không khớp cửa hàng nào sẽ không bao giờ trả về dữ liệu của cửa hàng khác. Dữ liệu cách ly bằng Row-Level Security trên PostgreSQL, và mỗi dịch vụ dùng role database với quyền tối thiểu.
  • Tạo cửa hàng không cần thao tác tay. Backend commit Ingress của cửa hàng mới vào repo GitOps qua GitHub API. ArgoCD đồng bộ, cert-manager cấp TLS, và cửa hàng chạy được ngay ở <mã>.store.devbyspark.com.
  • Đăng nhập tập trung qua auth.devbyspark.com. Một tài khoản dùng được cho nhiều cửa hàng và liên kết được một Google, một Apple, một Facebook.
  • Backend: .NET 8, Clean Architecture, CQRS (MediatR). Dùng PostgreSQL với pgvector để lưu embedding khuôn mặt, MongoDB lưu tin nhắn chat, Redis, Kafka, YARP gateway và worker chạy nền.
  • Frontend: Next.js và MUI, realtime qua SignalR.
  • Nhận diện khuôn mặt (đang thử nghiệm nội bộ, chưa phát hành): Face Tracking Service viết bằng Python, chạy ONNX Runtime trên CPU. Pipeline gồm phát hiện khuôn mặt (SCRFD), theo dõi (ByteTrack), chống giả mạo (MiniFASNet) và so khớp embedding (ArcFace). Dịch vụ chỉ làm suy luận AI, tách riêng khỏi nghiệp vụ chấm công.
  • Vận hành: api, fe, gateway và worker chạy trên Kubernetes (K3s) quản lý bằng ArgoCD. CI build image rồi tự cập nhật repo GitOps. Face Tracking Service có repo GitOps riêng và đang chạy thử trong cùng cluster.

Kết quả

  • CiCi bỏ Excel. Ca làm, chấm công, lịch vệ sinh kho và lương của hơn 10 nhân sự được tính tự động.
  • Hàng sắp hết và đơn bán lệch được cảnh báo ngay, không phải chờ đối chiếu sổ cuối ngày.
  • Chủ cửa hàng có báo cáo thuế và chi phí cho cổ đông.
  • Nền tảng đang phục vụ 2 thương hiệu với hơn 20 người dùng. Cửa hàng mẫu: demo.store.devbyspark.com.

Điểm nổi bật

  • Thiết kế và xây dựng một mình toàn bộ nền tảng: backend .NET 8, web Next.js, app React Native, hạ tầng Kubernetes/GitOps.

  • Chuyển hệ thống một cửa hàng thành SaaS đa tenant. Tenant được xác định theo tên miền và dữ liệu cách ly bằng Row-Level Security của PostgreSQL. Khi tạo cửa hàng mới, Ingress và chứng chỉ TLS được cấp tự động qua GitOps.

  • Một codebase React Native ra hai app: app CiCi và app Spark Store dùng chung cho mọi cửa hàng (đăng nhập Apple/Google, tiếng Anh và tiếng Việt).

  • Chấm công bằng khuôn mặt, GPS geofence và kiosk tại quầy. Đang thử nghiệm nội bộ Face Tracking Service tự xây (SCRFD → ByteTrack → chống giả mạo MiniFASNet → ArcFace) để chuyển việc nhận diện về phía server.

  • Mỗi cửa hàng có MCP server riêng với 176 tool nghiệp vụ. Thao tác ghi quan trọng phải xác nhận trước khi chạy, mọi lời gọi được ghi nhật ký. Trợ lý AI trong app dùng lại đúng lớp quyền này.

  • Thanh toán QR động được xác nhận tự động qua webhook ngân hàng ACB, có thêm kênh dự phòng đọc thông báo ngân hàng trên thiết bị Android (ký HMAC theo từng máy).

  • Đồng bộ hai chiều với KiotViet: kéo hàng hoá, đơn và tồn qua API/webhook; đẩy phiếu chỉnh tồn ngược sang KiotViet.

Hình ảnh

Storefront của CiCi 21 Chùa Láng chạy trên Spark Store
Cửa hàng mẫu trên nền tảng SaaS — cùng hệ thống, tên miền và thương hiệu riêng
Trợ lý AI trên storefront: tra sản phẩm, kiểm tra tồn kho, hỏi đáp 24/7