Một ứng dụng web full-stack được xây dựng bằng MERN Stack để quản lý thông tin giáo viên và vị trí công tác trong trường học.
- ✅ Xem danh sách giáo viên với thông tin đầy đủ
- ✅ Tạo mới hồ sơ giáo viên
- ✅ Chỉnh sửa thông tin giáo viên
- ✅ Xóa mềm (soft delete) giáo viên
- ✅ Tìm kiếm theo tên, email, số điện thoại
- ✅ Phân trang và lọc dữ liệu
- ✅ Quản lý học vị động (thêm/xóa nhiều học vị)
- ✅ Upload ảnh đại diện
- ✅ Gán nhiều vị trí công tác
- ✅ CRUD đầy đủ cho vị trí công tác
- ✅ Mã vị trí unique với validation
- ✅ Trạng thái hoạt động/không hoạt động
- ✅ Tìm kiếm và lọc
- ✅ Thống kê tổng quan (tổng số GV, đang làm việc, nghỉ việc)
- ✅ Quick actions (tạo mới, quản lý)
- ✅ Giao diện trực quan với biểu đồ
- Node.js - Runtime environment
- Express.js - Web framework
- MongoDB - Database NoSQL
- Mongoose - Object Document Mapping
- Express-validator - Input validation
- CORS - Cross-Origin Resource Sharing
- React 18 - UI Library với Hooks
- Ant Design - UI Component Library
- React Router - Navigation
- Axios - HTTP Client
- Day.js - Date manipulation
- Nodemon - Development server
- React Scripts - Build tools
qlgv/
├── 📁 server/ # Backend API
│ ├── 📁 controllers/ # Business logic
│ │ ├── teacher.controller.js
│ │ ├── teacherPosition.controller.js
│ │ └── user.controller.js
│ ├── 📁 models/ # Database schemas
│ │ ├── teacher.model.js
│ │ ├── teacherPosition.model.js
│ │ └── user.model.js
│ ├── 📁 routes/ # API routes
│ │ ├── teacher.routes.js
│ │ ├── teacherPosition.routes.js
│ │ └── user.routes.js
│ ├── server.js # Main server file
│ └── package.json
├── 📁 client/ # Frontend React App
│ ├── 📁 public/
│ ├── 📁 src/
│ │ ├── 📁 components/ # Reusable components
│ │ │ ├── 📁 common/
│ │ │ ├── 📁 layout/
│ │ │ ├── 📁 position/
│ │ │ └── 📁 teacher/
│ │ ├── 📁 pages/ # Page components
│ │ │ ├── 📁 position/
│ │ │ └── 📁 teacher/
│ │ ├── 📁 services/ # API services
│ │ ├── App.js
│ │ ├── App.css
│ │ └── index.js
│ └── package.json
├── start.bat # Script để chạy cả client và server
├── package.json # Root package.json
└── README.md
git clone <repository-url>
cd qlgvcd server
npm installcd client
npm installTạo file .env trong thư mục server/:
MONGODB_URI=mongodb://localhost:27017/teacher_management
PORT=5000Backend (Terminal 1):
cd server
npm run devFrontend (Terminal 2):
cd client
npm startstart.bat- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
Hiện tại chưa có authentication. Tất cả endpoints đều public.
GET /- Lấy danh sách giáo viên (với pagination, search)GET /:id- Lấy chi tiết một giáo viênPOST /- Tạo giáo viên mớiPUT /:id- Cập nhật thông tin giáo viênDELETE /:id- Xóa mềm giáo viênGET /stats- Thống kê giáo viên
GET /- Lấy danh sách vị trí công tácGET /:id- Lấy chi tiết một vị tríPOST /- Tạo vị trí mớiPUT /:id- Cập nhật vị tríDELETE /:id- Xóa mềm vị trí
GET /- Lấy danh sách người dùngGET /:id- Lấy chi tiết người dùngPOST /- Tạo người dùng mớiPUT /:id- Cập nhật người dùngDELETE /:id- Xóa mềm người dùng
- Responsive Design - Hoạt động tốt trên mọi thiết bị
- Dark/Light Theme - Giao diện sáng/tối (sẵn sàng)
- Loading States - Loading spinner cho tất cả operations
- Error Handling - Xử lý lỗi với thông báo rõ ràng
- Form Validation - Validation đầy đủ cho tất cả forms
- Search & Filter - Tìm kiếm và lọc dữ liệu thông minh
- Pagination - Phân trang với nhiều tùy chọn
- Soft Delete - Xóa mềm, có thể khôi phục
- Layout - Sidebar navigation với responsive
- Dashboard - Trang chủ với thống kê và quick actions
- TeacherTable - Bảng danh sách giáo viên với đầy đủ thông tin
- TeacherForm - Form tạo/sửa giáo viên với quản lý học vị động
- PositionTable - Bảng quản lý vị trí công tác
- PositionForm - Form tạo/sửa vị trí công tác
npm start # Chạy production server
npm run dev # Chạy development server với nodemonnpm start # Chạy development server
npm run build # Build production
npm test # Chạy tests- Thêm/xóa nhiều học vị cho một giáo viên
- Validation đầy đủ cho từng học vị
- UI trực quan với drag & drop sẵn sảng
- Gradient backgrounds và shadows
- Hover effects và animations
- Icon set nhất quán
- Color scheme chuyên nghiệp
- Dashboard với số liệu cập nhật tự động
- Charts sẵn sàng integrate
- Quick actions để thao tác nhanh
- Tìm kiếm real-time
- Multiple filter options
- Pagination với customizable page sizes
- Authentication & Authorization với JWT
- Role-based access control
- File upload cho documents
- Export Excel/PDF
- Email notifications
- Advanced reporting & charts
- Audit logs
- Backup & restore
- Mobile app (React Native)
- Real-time notifications
- Advanced analytics
- Integration với các hệ thống khác
- Multi-language support
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
Your Name
- GitHub: @yourusername
- Email: your.email@example.com
- Ant Design for the beautiful UI components
- MongoDB for the flexible database
- React for the powerful frontend framework
- Express.js for the robust backend framework