Bài toán

Thương hiệu cần một trò chơi ngắn, dễ chơi ngay tại cửa hàng để thu hút khách, tạo không khí sự kiện và ghi nhận thông tin người chơi để trao quà, đồng thời hoạt động ổn định cả khi mạng tại điểm bán chập chờn.

Chức năng chính

  • Màn hình chào và hướng dẫn luật chơi, nút START lớn phù hợp màn hình cảm ứng.
  • Trò chơi lật thẻ ghi nhớ 4×4: 16 thẻ hình sản phẩm (8 cặp từ 6 mẫu túi), xáo trộn mỗi lượt; lật 2 thẻ mỗi lượt, đúng cặp +10 điểm; có đồng hồ đếm ngược và thanh tiến độ điểm.
  • Kết quả thắng/thua: thắng khi ghép đủ 8 cặp hoặc đạt từ 4 cặp khi hết giờ; màn hình chiến thắng có hiệu ứng mở quà.
  • Cấu hình qua URL: thời gian chơi (timer), mã điểm bán (domain) để tách file log theo từng cửa hàng; chế độ debug để kiểm thử nhanh.
  • Ghi log người chơi: tên, số điện thoại, điểm, kết quả, thời gian (giờ Việt Nam) lưu vào CSV theo điểm bán; có bàn phím ảo tiếng Việt (Telex) cho kiosk.
  • Trang quản lý log: thống kê tổng lượt, tỉ lệ thắng, điểm trung bình; lọc thắng/thua, tìm kiếm, chọn điểm bán và tải file CSV.
  • Chống mất dữ liệu khi mất mạng: log chưa gửi được lưu tạm trong trình duyệt và tự đồng bộ lại khi có kết nối.

Công nghệ

Next.js (React, TypeScript), Server Actions, lưu trữ CSV phía server, đóng gói Docker (Node 22). Giao diện tự co giãn theo tỉ lệ kiosk cố định.

Điểm ưu việt

  • Triển khai gọn nhẹ, không cần cơ sở dữ liệu, dễ cài đặt cho nhiều điểm bán.
  • Một bản cài dùng chung cho nhiều cửa hàng nhờ tham số domain, dữ liệu tách riêng từng nơi.
  • Hoạt động bền bỉ khi mạng yếu, không mất thông tin người chơi.
  • Thiết kế đồ hoạ theo nhận diện thương hiệu, tối ưu cho màn hình cảm ứng khổ lớn.