Mô tả
✨ Tính năng chính
📦 Quản lý tồn kho
- Theo dõi tồn kho theo từng sản phẩm và từng kho riêng biệt
- Hiển thịđơn giá bình quân gia quyền(WAC) vàtổng giá trị tồntheo thời gian thực
- API tổng hợp giá trị tồn kho toàn hệ thống, phân theo kho
📥 Nhập kho
- Tạo phiếu nhập từnhà cung cấp (NCC), từxưởng sản xuấthoặcxưởng trả lại
- Tự động tính lại đơn giá bình quân gia quyền mỗi khi nhập hàng từ NCC
- Ghi nhận lịch sử biến động tồn kho (StockHistory) với giá trị mỗi lần nhập
📤 Xuất kho
- Tạo phiếu xuất đến xưởng sản xuất hoặc trả nhà cung cấp
- Ghi nhận giá trị hàng xuất dựa trên đơn giá bình quân tại thời điểm xuất
- Kiểm tra tồn kho đủ trước khi cho phép xuất
🔍 Kiểm kê kho
- Tạo và phê duyệt phiếu kiểm kê định kỳ
- Điều chỉnh tồn kho thực tế so với sổ sách sau kiểm kê
⚠️Quản lý hàng lỗi
- Ghi nhận hàng lỗi, báo hỏng từ xưởng sản xuất
- Lập phiếu hủy kho hoặc trả lại nhà cung cấp
📊 Dashboard & Báo cáo
- Tổng quan: số lượng sản phẩm, kho, nhà cung cấp,tổng giá trị tồn kho toàn hệ thống
- Biểu đồ nhập/xuất kho theo thời gian (Recharts)
- Xuất báo cáo ra file Excel (ExcelJS)
👥 Quản lý người dùng & Phân quyền
- Xác thực JWT, mã hóa mật khẩu bcrypt
- Phân quyền theo vai trò (Admin / Nhân viên kho)
- Khóa/mở khóa tài khoản người dùng
🛠️ Công nghệ sử dụng
Frontend (client/)
Thư viện | Phiên bản | Mục đích |
|---|
React | 18.3.1 | UI framework |
Vite | 6.0.5 | Build tool & Dev server |
Ant Design | 5.22.5 | Component library |
TanStack Query | 5.62.10 | Server state management & Caching |
React Router DOM | 6.28.1 | Client-side routing |
Axios | 1.7.9 | HTTP client |
Recharts | 2.15.0 | Biểu đồ thống kê |
Day.js | 1.11.13 | Xử lý ngày giờ |
Backend (server/)
Thư viện | Phiên bản | Mục đích |
|---|
Node.js | ≥ 20.0.0 | Runtime |
Express | 4.21.2 | Web framework |
Sequelize | 6.37.8 | ORM |
MySQL2 | 3.11.5 | Database driver |
JWT (jsonwebtoken) | 9.0.2 | Xác thực |
bcryptjs | 2.4.3 | Mã hóa mật khẩu |
ExcelJS | 4.4.0 | Xuất file Excel |
Morgan | 1.10.0 | HTTP request logging |
Hướng dẫn cài đặt
Cài đặt Backend
cd servernpm install
Tạo file.envtừ file mẫu và điền thông tin kết nối database:
cp .env.example .env
# server/.envPORT=5000NODE_ENV=developmentDB_HOST=localhostDB_PORT=3306DB_NAME=umc_warehouseDB_USER=rootDB_PASSWORD=your_passwordJWT_SECRET=your_super_secret_key_hereJWT_EXPIRES_IN=7d
Chạy migration để tạo các bảng trong database:
npx sequelize-cli db:migrate
(Tùy chọn)Seed dữ liệu mẫu để kiểm tra:
node scripts/demoSeed.js
Khởi động server:
npm run dev # Development mode (nodemon)npm start # Production mode
Server chạy tại:http://localhost:5000
3. Cài đặt Frontend
cd ../clientnpm install
Tạo file.envtừ file mẫu:
cp .env.example .env
# client/.envVITE_API_URL=http://localhost:5000/api
Khởi động client:
npm run dev
Client chạy tại:http://localhost:5173
🔐 Biến môi trường
Backend (server/.env)
Biến | Mô tả | Giá trị mặc định |
|---|
PORT
| Port chạy server | 5000
|
NODE_ENV
| Môi trường (development/production) | development
|
DB_HOST
| Host MySQL | localhost
|
DB_PORT
| Port MySQL | 3306
|
DB_NAME
| Tên database | — |
DB_USER
| Username MySQL | — |
DB_PASSWORD
| Password MySQL | — |
JWT_SECRET
| Khóa bí mật ký JWT | — |
JWT_EXPIRES_IN
| Thời hạn JWT | 7d
|
Frontend (client/.env)
Biến | Mô tả | Giá trị mặc định |
|---|
VITE_API_URL
| URL gốc của Backend API | http://localhost:5000/api
|
Cài đặt Backend
cd servernpm install
Tạo file.envtừ file mẫu và điền thông tin kết nối database:
cp .env.example .env
# server/.envPORT=5000NODE_ENV=developmentDB_HOST=localhostDB_PORT=3306DB_NAME=umc_warehouseDB_USER=rootDB_PASSWORD=your_passwordJWT_SECRET=your_super_secret_key_hereJWT_EXPIRES_IN=7d
Chạy migration để tạo các bảng trong database:
npx sequelize-cli db:migrate
(Tùy chọn)Seed dữ liệu mẫu để kiểm tra:
node scripts/demoSeed.js
Khởi động server:
npm run dev # Development mode (nodemon)npm start # Production mode
Server chạy tại:http://localhost:5000
3. Cài đặt Frontend
cd ../clientnpm install
Tạo file.envtừ file mẫu:
cp .env.example .env
# client/.envVITE_API_URL=http://localhost:5000/api
Khởi động client:
npm run dev
Client chạy tại:http://localhost:5173
🔐 Biến môi trường
Backend (server/.env)
Biến | Mô tả | Giá trị mặc định |
|---|
PORT
| Port chạy server | 5000
|
NODE_ENV
| Môi trường (development/production) | development
|
DB_HOST
| Host MySQL | localhost
|
DB_PORT
| Port MySQL | 3306
|
DB_NAME
| Tên database | — |
DB_USER
| Username MySQL | — |
DB_PASSWORD
| Password MySQL | — |
JWT_SECRET
| Khóa bí mật ký JWT | — |
JWT_EXPIRES_IN
| Thời hạn JWT | 7d
|
Frontend (client/.env)
Biến | Mô tả | Giá trị mặc định |
|---|
VITE_API_URL
| URL gốc của Backend API | http://localhost:5000/api
|