Skip to content

MinhMarks/Employee_Assessment_System_ScrumPM

Repository files navigation

Hệ thống đánh giá nhân viên (Employee Assessment System)

Ứng dụng quản lý và đánh giá hiệu suất nhân viên với backend MongoDB/Express và frontend React/TypeScript.

🚀 Cấu trúc dự án

├── backend/          # Backend API (Node.js + Express + MongoDB)
│   ├── src/
│   │   ├── models/   # Mongoose models
│   │   ├── routes/   # API routes
│   │   └── middleware/ # Auth middleware
│   └── server.js     # Entry point
│
└── frontend/         # Frontend (React + TypeScript + Vite)
    ├── src/
    │   ├── pages/    # Các trang chính
    │   ├── lib/      # API helpers
    │   └── types/    # TypeScript types
    └── ...

📋 Yêu cầu hệ thống

  • Node.js >= 16
  • MongoDB (local hoặc MongoDB Atlas)
  • npm hoặc yarn

🔧 Cài đặt

1. Backend

cd backend
npm install

# Tạo file .env
echo "MONGO_URL=mongodb://localhost:27017/employee-assessment" > .env
echo "JWT_SECRET=your-secret-key-here" >> .env
echo "PORT=4000" >> .env

# Seed dữ liệu mẫu (tùy chọn)
npm run seed

# Chạy server
npm run dev

Backend sẽ chạy tại: http://localhost:4000

2. Frontend

cd frontend
npm install

# File .env đã được cấu hình sẵn với:
# VITE_API_URL="http://localhost:4000"

# Chạy dev server
npm run dev

Frontend sẽ chạy tại: http://localhost:5173

👥 Tài khoản test

Sau khi chạy npm run seed trong backend, bạn có thể đăng nhập với:

Supervisor (Quản lý)

  • Username: manager
  • Password: 123456
  • Quyền: Xem danh sách nhân viên, tạo đánh giá, xem tất cả đánh giá

Employee (Nhân viên)

  • Username: sarah.johnson
  • Password: 123456
  • Quyền: Xem đánh giá của chính mình

🎯 Chức năng chính

Dành cho Supervisor:

  • ✅ Đăng nhập/Đăng xuất
  • ✅ Xem dashboard với thống kê tổng quan
  • ✅ Xem danh sách tất cả nhân viên
  • ✅ Xem chi tiết từng nhân viên và lịch sử đánh giá
  • ✅ Tạo đánh giá mới cho nhân viên
  • ✅ Xem biểu đồ xu hướng hiệu suất

Dành cho Employee:

  • ✅ Đăng nhập/Đăng xuất
  • ✅ Xem dashboard cá nhân
  • ✅ Xem lịch sử đánh giá của mình

📡 API Endpoints

Authentication

  • POST /api/auth/login - Đăng nhập

Employees

  • GET /api/employees - Lấy danh sách nhân viên (Supervisor only)

Assessments

  • POST /api/assessments - Tạo đánh giá mới (Supervisor only)
  • GET /api/assessments/me - Lấy đánh giá của mình (Employee)
  • GET /api/assessments/employee/:id - Lấy đánh giá của nhân viên (Supervisor only)

Chi tiết API xem tại: backend/API_DOCUMENTATION.md

🛠️ Công nghệ sử dụng

Backend:

  • Express.js - Web framework
  • MongoDB + Mongoose - Database
  • JWT - Authentication
  • bcrypt - Password hashing

Frontend:

  • React 18 - UI library
  • TypeScript - Type safety
  • Vite - Build tool
  • Tailwind CSS - Styling
  • shadcn/ui - UI components
  • Recharts - Charts
  • React Router - Routing
  • Sonner - Toast notifications

📝 Cách sử dụng

  1. Đăng nhập: Truy cập http://localhost:5173/login và đăng nhập với tài khoản test

  2. Supervisor:

    • Xem danh sách nhân viên tại /employees
    • Click vào nhân viên để xem chi tiết
    • Tạo đánh giá mới tại /assessment/new
  3. Employee:

    • Xem dashboard để thấy lịch sử đánh giá của mình

🔒 Bảo mật

  • JWT token hết hạn sau 8 giờ
  • Password được hash bằng bcrypt
  • CORS được cấu hình chỉ cho phép frontend từ localhost:5173
  • Role-based access control (RBAC)

🐛 Troubleshooting

Backend không kết nối được MongoDB:

# Kiểm tra MongoDB đang chạy
mongod --version

# Hoặc sử dụng MongoDB Atlas (cloud)
# Cập nhật MONGO_URL trong .env

Frontend không gọi được API:

# Kiểm tra backend đang chạy tại port 4000
# Kiểm tra VITE_API_URL trong frontend/.env

Lỗi CORS:

# Đảm bảo frontend chạy tại port 5173
# Hoặc cập nhật CORS origin trong backend/server.js

📚 Tài liệu tham khảo

🤝 Đóng góp

Mọi đóng góp đều được chào đón! Vui lòng tạo issue hoặc pull request.

🚀 Deploy lên Production

Xem hướng dẫn chi tiết trong:

Tóm tắt:

  1. Setup MongoDB Atlas (miễn phí)
  2. Deploy backend lên Vercel
  3. Deploy frontend lên Vercel
  4. Cấu hình environment variables
  5. Test và sử dụng

Thời gian: ~30 phút

📄 License

MIT License

About

That's where I applied what I had learned from the project management Scrum courses. I'm vice management of my team and use clickup website to manage.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors