Minitake là một hệ thống quản lý nhà hàng toàn diện với menu số, cho phép khách hàng quét mã QR để xem menu, đặt món và thanh toán trực tuyến. Hệ thống cung cấp dashboard quản lý cho chủ cửa hàng để theo dõi đơn hàng, menu, bàn và doanh thu.
- 📱 Menu số thông minh: Quét QR code để xem menu trên điện thoại
- 🛒 Đặt món trực tuyến: Thêm món vào giỏ hàng và đặt món ngay
- 💳 Đa dạng phương thức thanh toán: Tiền mặt, chuyển khoản QR, ví điện tử
- 📊 Theo dõi đơn hàng: Xem trạng thái đơn hàng real-time
- 🔍 Xem chi tiết món: Click vào món để xem mô tả đầy đủ và hình ảnh lớn
- 📈 Dashboard thống kê: Doanh thu, đơn hàng theo ngày
- 📋 Quản lý Menu: Thêm/sửa/xóa danh mục và món ăn
- 🪑 Quản lý Bàn: Tạo QR code cho từng bàn
- 📦 Quản lý Đơn hàng: Cập nhật trạng thái đơn hàng (pending → preparing → ready → completed)
- ⚙️ Cài đặt Cửa hàng: Logo, thông tin liên hệ, cấu hình thanh toán
- 💰 Quản lý Thanh toán: Cấu hình phương thức thanh toán
- FastAPI - Modern Python web framework
- MongoDB - NoSQL database (Motor async driver)
- JWT - Authentication & Authorization
- bcrypt - Password hashing
- Python 3.8+
- React 19 - UI library
- React Router v7 - Routing
- Tailwind CSS - Styling
- Radix UI - Accessible components
- Shadcn/ui - Beautiful component library
- Axios - HTTP client
- Lucide React - Icons
- Sonner - Toast notifications
- Node.js >= 16.x
- Python >= 3.8
- MongoDB (Local hoặc Cloud - MongoDB Atlas)
- npm/yarn - Package manager
- pip - Python package manager
git clone https://github.com/nhatphatt/app.git
cd appcd backend
# Tạo virtual environment (khuyến nghị)
python -m venv venv
# Kích hoạt virtual environment
# Windows:
venv\Scripts\activate
# Mac/Linux:
source venv/bin/activate
# Cài đặt dependencies
pip install -r requirements.txt
# Tạo file .env (copy từ .env.example hoặc tạo mới)
# Chỉnh sửa thông tin MongoDB và các cấu hình khácFile .env cần có:
MONGO_URL="mongodb://localhost:27017" # Hoặc MongoDB Atlas URL
DB_NAME="minitake_db"
CORS_ORIGINS="*"
JWT_SECRET="your-super-secret-key-change-this"
FRONTEND_URL="http://localhost:3000"Chạy backend:
uvicorn server:app --reload --host 0.0.0.0 --port 8000Backend sẽ chạy tại: http://localhost:8000
API Docs: http://localhost:8000/docs
cd frontend
# Cài đặt dependencies (sử dụng npm hoặc yarn)
npm install
# hoặc
yarn install
# Tạo file .env
# Copy từ .env.example hoặc tạo mớiFile .env cần có:
REACT_APP_BACKEND_URL=http://localhost:8000Chạy frontend:
npm start
# hoặc
yarn startFrontend sẽ chạy tại: http://localhost:3000
- Admin Dashboard:
http://localhost:3000/admin/login - Customer Menu:
http://localhost:3000/menu/{store-slug} - API Documentation:
http://localhost:8000/docs
app/
├── backend/
│ ├── server.py # FastAPI main application
│ ├── payment_service.py # Payment processing service
│ ├── requirements.txt # Python dependencies
│ └── .env # Backend environment variables
│
├── frontend/
│ ├── public/
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ │ ├── ui/ # Shadcn/ui components
│ │ │ ├── AdminLayout.js
│ │ │ ├── PaymentFlow.js
│ │ │ └── OrderStatusTracker.js
│ │ ├── pages/
│ │ │ ├── admin/ # Admin pages
│ │ │ │ ├── AdminDashboard.js
│ │ │ │ ├── MenuManagement.js
│ │ │ │ ├── OrdersManagement.js
│ │ │ │ ├── TablesManagement.js
│ │ │ │ ├── StoreSettings.js
│ │ │ │ └── PaymentSettings.js
│ │ │ └── CustomerMenu.js
│ │ ├── utils/
│ │ │ ├── api.js # API client
│ │ │ └── auth.js # Auth utilities
│ │ └── App.js
│ ├── package.json
│ └── .env # Frontend environment variables
│
└── README.md
- Truy cập
http://localhost:3000/admin/register - Điền thông tin:
- Mật khẩu
- Tên của bạn
- Tên cửa hàng
- Slug cửa hàng (URL-friendly, vd:
my-restaurant)
- Đăng nhập tại
http://localhost:3000/admin/login
-
Cài đặt thông tin: Vào Settings để cập nhật:
- Logo cửa hàng (URL)
- Địa chỉ
- Số điện thoại
- Xem preview logo ngay trong form
-
Quản lý Menu:
- Tạo danh mục (Categories)
- Thêm món ăn với hình ảnh, mô tả, giá
- Import hàng loạt bằng JSON
-
Quản lý Bàn:
- Tạo bàn với số bàn
- Tự động tạo QR code cho mỗi bàn
- In QR code để khách quét
-
Cấu hình Thanh toán:
- Thiết lập phương thức thanh toán
- Cấu hình tài khoản ngân hàng cho QR code
- Kích hoạt/tắt từng phương thức
- Quét QR code trên bàn hoặc truy cập URL menu
- Xem menu theo danh mục
- Click vào món để xem chi tiết (popup với ảnh lớn)
- Thêm món vào giỏ hàng
- Điền thông tin và xác nhận đặt món
- Chọn phương thức thanh toán
- Theo dõi trạng thái đơn hàng
- ✅ JWT authentication
- ✅ Password hashing với bcrypt
- ✅ CORS configuration
- ✅ Environment variables cho sensitive data
⚠️ Lưu ý: ĐổiJWT_SECRETtrong production!
- stores - Thông tin cửa hàng
- users - Tài khoản admin/staff
- categories - Danh mục món ăn
- menu_items - Món ăn
- tables - Bàn trong nhà hàng
- orders - Đơn hàng
- payments - Giao dịch thanh toán
- payment_methods - Cấu hình thanh toán
GET /api/public/{store_slug}/menu- Lấy menu công khaiPOST /api/public/{store_slug}/orders- Tạo đơn hàngGET /api/public/orders/{order_id}- Xem trạng thái đơn hàngPOST /api/payments/initiate- Khởi tạo thanh toán
GET /api/stores/me- Thông tin cửa hàngGET /api/categories- Danh sách danh mụcGET /api/menu-items- Danh sách món ănGET /api/orders- Danh sách đơn hàngGET /api/analytics/dashboard- Thống kê dashboard
Xem đầy đủ tại: http://localhost:8000/docs
Mọi đóng góp đều được hoan nghênh! Vui lòng:
- Fork repository
- Tạo branch mới (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add some AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Mở Pull Request
Dự án này được phát triển cho mục đích học tập và thương mại.
Nhật Phát - GitHub
Nếu có vấn đề hoặc câu hỏi, vui lòng tạo Issue trên GitHub.
⭐ Nếu dự án hữu ích, hãy cho một Star nhé! ⭐