Dự án phát triển hệ thống gọi món tại bàn bằng mã QR. Team: [Tên nhóm của bạn] Môn học: Web Application Development (WAD)
- Frontend: React (Vite)
- Backend: Node.js (Express)
- Database: PostgreSQL (Supabase)
- Environment: Docker & Docker Compose (Chạy trên WSL2)
Tất cả thành viên nhóm BẮT BUỘC phải cài đặt các công cụ sau trên Windows:
- WSL2 (Windows Subsystem for Linux): Đã cài Ubuntu.
- Docker Desktop: Đã bật setting "Use WSL 2 based engine" và bật Integration cho Ubuntu.
- VS Code: Đã cài extension "Remote - WSL".
- Git: Cài đặt trong WSL.
⚠️ Lưu ý: Tuyệt đối clone code vào thư mục của Linux (Ví dụ:~/smart-restaurant), KHÔNG clone vào ổ C hoặc D của Windows để tránh lỗi permission và chạy chậm.
Mở Terminal của WSL (Ubuntu) và chạy:
# Clone repo về thư mục Home của Linux
cd ~
git clone https://github.com/<username>/smart-restaurant.git
cd smart-restaurantTạo file .env ở thư mục backend (Copy từ file mẫu nếu có, hoặc tự tạo):
# Trong file backend/.env
PORT=5001
DATABASE_URL="postgres://..." # Lấy link này từ Supabase DashboardChạy lệnh sau để cài node_modules và build images:
make setup
make devSau khi thấy thông báo "Server running..." và "Local: http://localhost:5173", hãy mở trình duyệt:
- Frontend: http://localhost:5173
- Backend: http://localhost:5001
Khi code, nếu cần cài thêm gói (ví dụ axios, date-fns...), hãy làm theo đúng quy trình sau để không làm lỗi máy của thành viên khác:
Bấm Ctrl + C hoặc chạy:
make stopDùng terminal WSL, cd vào đúng thư mục và cài đặt:
# Ví dụ cài axios cho frontend
cd frontend
npm install axiosSau khi cài xong, quay lại thư mục gốc và chạy lại Docker với cờ build để container cập nhật thư viện mới:
cd ..
make updateNhớ commit cả 2 file package.json và package-lock.json lên Git.
🚨 Đối với thành viên khác: Khi pull code về, nếu thấy đồng đội có update file package.json, hãy chạy ngay make setup để máy mình cập nhật thư viện mới.
Chúng ta tuân thủ quy trình sau để tránh conflict code:
-
Main Branch: Chỉ chứa code sạch, đã test, có thể nộp bài. KHÔNG push trực tiếp vào main.
-
Dev Branch: Nhánh phát triển chung.
-
Feature Branches: Mỗi khi làm tính năng mới, hãy tạo nhánh từ dev:
- Đặt tên nhánh:
feature/<tên-tính-năng>(ví dụ:feature/login-ui,feature/api-menu). - Code xong → Push lên Github → Tạo Pull Request (PR) vào nhánh dev.
- Review code xong mới Merge.
- Đặt tên nhánh:
| Lệnh | Tác dụng |
|---|---|
make dev |
Khởi động toàn bộ dự án (Frontend + Backend + DB) |
make setup |
Cài đặt node_modules (Chạy khi mới clone hoặc pull code mới) |
make stop |
Tắt toàn bộ container |
make clean |
Xóa sạch container và images (Dùng khi lỗi nặng cần reset) |