Một hệ thống Point of Sale (POS) hoàn chỉnh được thiết kế đặc biệt cho nhà hàng Việt Nam, được xây dựng với Next.js 15, TypeScript và Tailwind CSS.
- Hiển thị trực quan: Grid layout với màu sắc phân biệt trạng thái
- Phân khu vực: Trong nhà, ngoài trời, phòng riêng VIP
- Theo dõi real-time: Thời gian phục vụ, số món, tổng tiền
- Đặt bàn: Hỗ trợ đặt bàn trước với thông tin khách hàng
- 12 bàn: Đa dạng sức chứa từ 2-10 người
- 25+ món ăn: Phở, bún, cơm, chè, lẩu và đồ uống
- Phân danh mục: Món chính, khai vị, đồ uống, tráng miệng, lẩu
- Thông tin chi tiết:
- Mô tả món ăn
- Thành phần nguyên liệu
- Thông tin dinh dưỡng
- Thời gian chế biến
- Cảnh báo dị ứng
- Lọc thông minh: Theo danh mục, độ cay, có cồn
- Đa phương thức: Tiền mặt, thẻ, chuyển khoản, MoMo, ZaloPay
- Tính toán chính xác: Thuế VAT 10%, phí phục vụ
- Format Việt Nam: Hiển thị VNĐ theo chuẩn địa phương
- Hóa đơn điện tử: Header/footer tùy chỉnh
- Tiếng Việt & Tiếng Anh: Chuyển đổi linh hoạt
- Localization: Định dạng tiền tệ, ngày tháng theo địa phương
- UI/UX: Thiết kế thân thiện với người dùng Việt Nam
POS_FE/
├── 📁 app/ # Next.js App Router
│ ├── pos/page.tsx # Trang POS chính
│ ├── products/ # Quản lý sản phẩm
│ ├── customers/ # Quản lý khách hàng
│ └── reports/ # Báo cáo thống kê
├── 📁 components/ # React Components
│ ├── pos/ # Components POS
│ │ ├── table-grid.tsx # Grid hiển thị bàn ăn
│ │ ├── product-grid.tsx # Grid menu món ăn
│ │ ├── cart.tsx # Giỏ hàng/đơn hàng
│ │ └── checkout-modal.tsx # Modal thanh toán
│ └── ui/ # UI Components (Shadcn/UI)
├── 📁 data/ # Dữ liệu JSON
│ ├── tables.json # Dữ liệu bàn ăn
│ ├── menu.json # Menu món ăn
│ └── settings.json # Cấu hình hệ thống
├── 📁 hooks/ # Custom React Hooks
│ └── use-tables.ts # Hook quản lý bàn ăn
├── 📁 lib/ # Utilities & Libraries
│ ├── data.ts # Data access layer
│ └── i18n.ts # Internationalization
├── 📁 contexts/ # React Context
│ ├── language-context.tsx # Context đa ngôn ngữ
│ └── theme-context.tsx # Context theme
└── 📁 locales/ # Translation files
├── en.json # Tiếng Anh
└── vi.json # Tiếng Việt
- Node.js: ≥ 18.0.0
- npm/yarn/pnpm: Package manager
- Browser: Chrome, Firefox, Safari (modern browsers)
- Clone repository
git clone <repository-url>
cd POS_FE- Cài đặt dependencies
npm install
# hoặc
yarn install
# hoặc
pnpm install- Chạy development server
npm run dev
# hoặc
yarn dev
# hoặc
pnpm dev- Mở trình duyệt
http://localhost:3000
npm run build
npm run startTất cả dữ liệu được tổ chức trong các file JSON để dễ quản lý:
/data/tables.json: Thông tin bàn ăn, khu vực, trạng thái/data/menu.json: Menu món ăn, danh mục, khuyến mãi/data/settings.json: Cấu hình hệ thống, thuế, thanh toán
import {
getTablesData,
getMenuData,
formatCurrency,
calculateTotal
} from '@/lib/data';
// Lấy dữ liệu bàn ăn
const { tables, zones } = getTablesData();
// Format tiền tệ Việt Nam
const price = formatCurrency(65000); // "65.000đ"Chi tiết xem: /data/README.md
- Chọn Bàn: Click vào bàn trống để bắt đầu đơn hàng
- Chọn Món: Browse menu theo danh mục, thêm món vào đơn
- Quản Lý Đơn: Điều chỉnh số lượng, xóa món không cần
- Thanh Toán: Chọn phương thức thanh toán và hoàn tất
- Giải Phóng Bàn: Bàn tự động chuyển về trạng thái trống
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- UI Components: Shadcn/UI + Radix UI
- Icons: Lucide React
- State Management: React Hooks + Context
- Data: Static JSON files
- I18n: react-i18next
- Build Tool: Next.js built-in
- 🟢 Xanh: Bàn trống (available)
- 🔴 Đỏ: Đang phục vụ (occupied)
- 🟡 Vàng: Đã đặt (reserved)
- ⚪ Xám: Dọn dẹp (cleaning)
- 🟠 Cam: Bảo trì (maintenance)
- Font: Geist Sans (primary), Geist Mono (code)
- Sizes: Responsive với Tailwind scale
- Consistent: Sử dụng design system thống nhất
- Accessible: Tuân thủ WCAG guidelines
- Responsive: Mobile-first approach
- Static Generation: Pre-render tại build time
- Code Splitting: Tự động với Next.js
- Image Optimization: Next.js Image component
- Bundle Size: Tree shaking với ES modules
- Caching: Static assets caching
Tạo file .env.local:
NEXT_PUBLIC_APP_NAME="Nhà Hàng Việt Nam"
NEXT_PUBLIC_CURRENCY="VND"
NEXT_PUBLIC_TIMEZONE="Asia/Ho_Chi_Minh"- Theme: Chỉnh sửa
tailwind.config.js - Languages: Thêm/sửa files trong
/locales - Data: Cập nhật files JSON trong
/data
# Type checking
npm run type-check
# Linting
npm run lint
# Build test
npm run build- Fork repository
- Create feature branch
- Commit changes với conventional commits
- Push và tạo Pull Request
- Review và merge
feat: thêm tính năng đặt bàn trước
fix: sửa lỗi tính toán thuế
docs: cập nhật README
style: format code
refactor: tối ưu component table-grid
MIT License - xem file LICENSE để biết thêm chi tiết.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: support@nhahangvietnam.com
- Next.js Team: Framework tuyệt vời
- Vercel: Hosting platform
- Shadcn: UI component library
- Tailwind CSS: Utility-first CSS framework
🇻🇳 Tự hào sản xuất tại Việt Nam
Phiên bản: 1.0.0 | Cập nhật: 15/11/2024