Hệ Thống Quản Lý Nhà Hàng Fullstack
Đây là một giải pháp phần mềm quản lý nhà hàng toàn diện, được xây dựng với kiến trúc hiện đại, phân tách rõ ràng giữa Backend và Frontend. Dự án bao gồm một ứng dụng Mobile dành cho khách hàng/nhân viên order và một trang Web Dashboard dành cho Admin quản trị hệ thống. Code được viết chuẩn mực, clean code, rất phù hợp để làm đồ án tốt nghiệp, bài tập lớn hoặc làm nền tảng phát triển dự án thực tế. có thanh toán bằng
1. CÔNG NGHỆ SỬ DỤNG:
-
Backend: Java Spring Boot (RESTful API, Spring Security, Spring Data JPA).
-
Web Admin (Frontend): Next.js (React), tối ưu UI/UX, responsive mượt mà.
-
Mobile App: React Native (chạy đa nền tảng Android/iOS).
-
Hệ quản trị CSDL: PostgreSQL - Xử lý dữ liệu lớn, quan hệ phức tạp.
-
Môi trường & Triển khai: Tích hợp sẵn Docker và Docker Compose giúp deploy cực kỳ nhanh chóng chỉ với 1 câu lệnh.
2. CHỨC NĂNG NỔI BẬT:
3. ĐỐI TƯỢNG PHÙ HỢP:
-
Sinh viên ngành CNTT cần source code chất lượng để tham khảo làm đồ án tốt nghiệp.
-
Lập trình viên muốn tìm hiểu kiến trúc micro-services cơ bản hoặc cách kết nối hệ sinh thái Java Spring Boot với React Native/Next.js.
XEM THÊM ==> Hướng dẫn cài đặt chi tiết
HƯỚNG DẪN CÀI ĐẶT
markdown
## ⚙️ Hướng dẫn Cài đặt và Chạy dự án
> **Yêu cầu:** Java 17+, Node.js 18+, PostgreSQL 15, Docker (tuỳ chọn)
---
### 1. Clone dự án
```bash
git clone https://github.com/<your-username>/<your-repo>.git
cd <your-repo>
2. Backend (Spring Boot)
Bước 1 — Tạo file biến môi trường:
bash
cd backend
copy .env.example .env # Windows
cp .env.example .env # Linux/macOS
Mở .env và điền thông tin thực:
env
SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/DucToanRestaurant
SPRING_DATASOURCE_USERNAME=postgres
SPRING_DATASOURCE_PASSWORD=your_password
JWT_SECRET=your_jwt_secret_base64
NHANVIEN_API_KEY=your_custom_key
GEMINI_API_KEY=your_gemini_key
GEMINI_API_URL=https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent
PAYOS_CLIENT_ID=your_payos_client_id
PAYOS_API_KEY=your_payos_api_key
PAYOS_CHECKSUM_KEY=your_payos_checksum_key
UPLOAD_DIR=<absolute_path>/backend/image-dir
WEATHER_API_KEY=your_openweathermap_key
WEATHER_CITY=Ho Chi Minh
CLOUDINARY_CLOUD_NAME=
CLOUDINARY_API_KEY=
CLOUDINARY_API_SECRET=
Bước 2 — Tạo database:
sql
CREATE DATABASE "DucToanRestaurant";
Bước 3 — Chạy backend:
bash
# Windows
gradlew.bat bootRun
# Linux/macOS
./gradlew bootRun
Hoặc dùng Docker: docker-compose up -d --build (cần tạo .env.docker tương tự .env)
✅ API chạy tại: http://localhost:8080
3. Web Admin (Next.js)
Bước 1 — Tạo file .env.local trong thư mục webadmin/:
env
NEXT_PUBLIC_API_URL=http://localhost:8080
NEXT_PUBLIC_FIREBASE_API_KEY=
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=
NEXT_PUBLIC_FIREBASE_DATABASE_URL=
NEXT_PUBLIC_FIREBASE_PROJECT_ID=
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=
NEXT_PUBLIC_FIREBASE_APP_ID=
Bước 2 — Cài và chạy:
bash
cd webadmin
npm install
npm run dev
✅ Web Admin tại: http://localhost:3000
4. Mobile App (Expo React Native)
Bước 1 — Đổi API URL trong file mobile/constants/api.ts:
ts
// Khi chạy local thay bằng IP LAN của máy bạn (KHÔNG dùng localhost)
export const BASE_URL = 'http://192.168.x.x:8080/api';
export const BASE_URL_IMG = 'http://192.168.x.x:8080/uploads';
export const WEBSOCKET_URL = 'ws://192.168.x.x:8080/ws';
Tìm IP LAN: ipconfig (Windows) hoặc ifconfig (macOS/Linux)
Bước 2 — Cài và chạy:
bash
cd mobile
npm install
npx expo start
-
📱 Thiết bị thật: Quét QR bằng app Expo Go
-
🤖 Android emulator: Nhấn a
-
🍎 iOS simulator (macOS only): Nhấn i
5. Các API Key cần đăng ký
6. Lỗi thường gặp
|
Lỗi
|
Nguyên nhân
|
Cách fix
|
|
Connection refused DB
|
PostgreSQL chưa chạy
|
Kiểm tra service PostgreSQL
|
|
Port 8080 in use
|
Cổng bị chiếm
|
Đổi server.port=8081 trong application.properties
|
|
Mobile không kết nối API
|
Dùng localhost trên thiết bị thật
|
Dùng IP LAN thay localhost
|
|
Gradle build failed
|
Sai Java version
|
Đảm bảo JAVA_HOME trỏ JDK 17
|
|
npm install lỗi
|
Cache node_modules cũ
|
Xoá node_modules/ rồi cài lại
|
Nguồn: Topcode.vn