ShopeeFood Clone — hệ thống đặt đồ ăn online full-stack xây trên Laravel 12 + Vue 3 + MySQL, gồm 3 cổng độc lập:
Customer: Tìm kiếm theo tên/món/địa chỉ, lọc theo danh mục, sort nổi bật/mới/rating, hero banner, food modal, giỏ hàng localStorage (chặn 2 NH), checkout với địa chỉ phân cấp Tỉnh/Huyện/Xã hoặc địa chỉ đã lưu, voucher per-restaurant/global, thanh toán MoMo Sandbox (payWithATM + Query API + IPN) hoặc COD, theo dõi đơn realtime, đánh giá có sửa/xóa.
Owner CMS: Dashboard KPI doanh thu 7 ngày + top món, CRUD nhà hàng/menu/voucher (upload ảnh local), order pipeline với action buttons theo state machine, realtime thông báo đơn mới qua Reverb.
Admin Portal: Tổng quan toàn hệ thống (users/restaurants/foods/reviews/vouchers), xét duyệt nhà hàng, CRUD users/restaurants/categories/vouchers (global hoặc theo NH), drill-down analytics theo từng NH.
XEM THÊM ==> Hướng dẫn cài đặt chi tiết
Nguồn: Sharecode.vn
## Cài đặt từ A-Z(trong readme.md có chi tiết)
### 1. mua source code
### 2. Cài dependencies
```bash
# Backend
composer install
# Frontend
npm install
```
### 3. Tạo file môi trường
```bash
# Copy template
cp .env.example .env
# Generate APP_KEY
php artisan key:generate
```
### 4. Tạo database
Mở MySQL (HeidiSQL / phpMyAdmin / CLI) và chạy:
```sql
CREATE DATABASE shopee_food CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
### 5. Cấu hình `.env`
Mở file `.env` và sửa các dòng sau:
```env
APP_NAME=ShopeeFood
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost:8000
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=shopee_food
DB_USERNAME=root
DB_PASSWORD=
# Sanctum / SPA
SANCTUM_STATEFUL_DOMAINS=localhost:8000,127.0.0.1:8000
# Reverb (WebSocket realtime)
BROADCAST_CONNECTION=reverb
REVERB_APP_ID=285240
REVERB_APP_KEY=2zwce4tvm5tqrztddeas
REVERB_APP_SECRET=g3fuu9cigfrxzz8qi8tq
REVERB_HOST=localhost
REVERB_PORT=8080
REVERB_SCHEME=http
VITE_REVERB_APP_KEY="${REVERB_APP_KEY}"
VITE_REVERB_HOST="${REVERB_HOST}"
VITE_REVERB_PORT="${REVERB_PORT}"
VITE_REVERB_SCHEME="${REVERB_SCHEME}"
# MoMo Payment (sandbox SDK demo — KHÔNG đổi nếu không có merchant thật)
MOMO_PARTNER_CODE=MOMOBKUN20180529
MOMO_ACCESS_KEY=klm05TvNBzhg7h7j
MOMO_SECRET_KEY=at67qH6mk8w5Y1nAyMoYKMWACiEi2bsa
MOMO_ENDPOINT=https://test-payment.momo.vn/v2/gateway/api/create
MOMO_REDIRECT_URL=http://localhost:8000/payments/momo/return
MOMO_IPN_URL=http://localhost:8000/api/payments/momo/ipn
MOMO_REQUEST_TYPE=payWithATM
```
### 6. Migrate database + Seed dữ liệu mẫu
```bash
php artisan migrate --seed
```
Lệnh này sẽ tạo:
- 9 users (1 admin + 4 owners + 4 customers)
- 5 categories, 9 nhà hàng, 39 món ăn (kèm ảnh Unsplash CDN)
- 24 đơn hàng mẫu, 7 reviews, 4 vouchers
### 7. Import dữ liệu Tỉnh/Huyện/Xã
```bash
php php import_sql.php
```
Lệnh này nạp 63 tỉnh, 705 huyện, 10599 xã từ 3 file SQL trong thư mục gốc. (dữ liệu trước khi sáp nhập)
### 8. Symlink storage cho upload ảnh
```bash
php artisan storage:link
```
### 9. Build frontend
```bash
# Production build
npm run build
# HOẶC dev mode (HMR — không cần build lại khi sửa Vue)
npm run dev
```