In our project, we use Jira Cloud.
Our requirement is:
1. Define tasks, Assign start date and end date to tasks
2. Assign tasks to resources with % of allocation (a resource may work on more than one task)
3. While executing tasks, resources should clock actual-time
Idea is to collect estimated and actual efforts and defects.