Automatically Generate Dynamic Schedule/ETAs Based on Task Hours?

I’ve been searching for a solution for a while but haven’t found any way of doing this, I’m wondering if it’s possible in

I’ve used scheduling programs that basically take the number of hours estimated to do tasks and create dynamic schedules based on the order of those tasks.

So, let’s say I have Task 1 (which will take 4 hours) Task 2 (which will take 8 hours) and Task 3 (which will take 4 hours.

What I’d like to be able to do is to have take in that information, and based on having 8 hours in a day, weekdays only, automatically/dynamically schedule hours to work on certain tasks on certain days.

So if I have the following in a board:
Task 1 (4 hours)
Task 2 (8 hours)
Task 3 (4 hours)

It would take the number of hours for each task, “fill up” days with the amount of time needed for each task, and then create a calendar that says, essentially, "Task 1 will be worked on and complete on 7/21 (4 hours out of an 8-hour day), Task 2 will be worked on 7/21 - 7/22 and complete on 7/22 (4 hours on 7/21 and 4 hours on 7/22), and Task 3 will be worked on 7/22 and complete on 7/22 (the second 4 hours on the 22nd).

Then, if I were to rearrange priorities, say Task 3 becomes higher priority than Task 2, dragging and dropping Task 3 above task 2 would mean that Tasks 1 and 2 would both be complete on 7/21, and Task 2 would be completed on 7/22, or if another task comes in that’s higher priority than those 3, putting at the top of the list would shift the entire schedule that number of hours, etc.

I know I’ve done this in a scheduling application previously, but I don’t remember which one it was, or what this type of automated scheduling is called. I’d love to know if there’s a name for this, and if it could somehow be done with

Thank you!