# task management
## FE
### Features
- Page
- Sign in page
- Home page: thể hiện task user ( task màu đỏ tới task màu vàng rồi tới task xanh )
- File Page
- Dashboard: thể hiện số lượng task trong tuần, số lượng task tới hạn trong ngày, số lượng task hoàn thành đúng hạn...
- user có role ceo hoặc user thuộc team hr được phép tạo tài khoản cho nhân viên mới => sau khi tạo, gửi mail cho nhân viên mới. Trong mail có đường link để đổi mật khẩu =>
- Page tạo tài khoản
- Page đổi mật khẩu
- user được giao task, gửi mail cho user
- nếu công việc
- tới hạn trong ngày: màu đỏ
- còn 3 ngày: màu vàng
- trên 3 ngày: màu xanh
- task
- tạo task
- giao task
- xóa task
- hiển thị task list
- cập nhật trạng thái của task
- notification for user
## BE
### Features
- ceo: có thể xóa manager, worker
- get task list có page, limit
- assigner: có thể giao task những assignee trong quyền quản lý của mình
- chỉ có ceo và assigner (đã tạo task) được quyền cập nhật task và xóa task
### Model
#### User
- name
- email
- pass
- role (ceo, manager, worker)
- team require: false (ObjectId) :rocket:
- imageUrl
- phone1
- phone2
- mange [ObjectId User]
- comp letedWork Count
- đếm số công việc hoàn thành quá hẹn và đúng hẹn :rocket:
- jobs Received Count
<!-- - tasks [ObjectId] -->
#### Task
- name
- description
- assigner (ObjectId)
- assignee [(ObjectId)]
- status
- isDeleted
- review [{content}]
- due
- file [ObjectId]
- progress Number max:100 min:0 default:0
- important: boolean
- urgent: boolean
#### File
- name
- link (Cloudinary)
#### Team
- name
- manager: (ObjectId User)
- workers [ObjectId User]
#### Project
- name
- description
- assigner (ObjectId)
- status
- isDeleted
- tasks [ObjectId Task]
### Library
- sendgrid: gửi email
- charJs: vẽ biểu đồ
- dayjs: làm việc với thời gian
- socket io (chat) :rocket: