---
# System prepended metadata

title: task management

---

# 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: 