I think the perfect project management tool would be a combination of these.
Calendar is easiest as it just has to do what calendars do, and sync up to Google calendar and Zoho or any others for convenience.
Project management would let me separate things by client and their projects, and ultimately into todos.
Todos would not just have a "due date", but rather have a type of due "range". Or even separate dates for "get started" and "due". If I set a get started date 10 days before due date, the app would give me a working range.
If todos had time estimates, and ultimately the project had a time estimate, that would also help align starting and due dates, which would all be represented on the calendar.
Finally I could do time tracking but not in the usual sense. I might find it useful to track time on each todo, or on the project as a whole. But I actually track time by day. So each day of work I'm logging the tasks I do and taking notes on that.
At 9am to 10:30am I'm working on client X across two projects A and B.
Then from 10:45am to 12:00pm I worked on client Z on project C.
What this looks like is basically a chronological log. Like this:
Client Acme (a OneNote file)
-- Project X (A particular page)
4/19/2019 - (2:00) - (BILLED)
... notes ....
4/21/2019 - (1:30) - (BILLED)
... notes ...
4/22/2019 - (3:00) - (UNBILLED)
... notes ...
Within the concept of a daily log, I could work on any number of tasks or todos, doesn't really matter, as long as I have the total time spent and tracked in the daily log notes.
Then when I go to invoice Acme (every two weeks), I can add up the time on all their projects dating back to the last time entry that was billed.
I know todo apps or project management apps often have time tracking, but I feel like this is not a smooth experience, and the data is scattered around. I track time with a separate app Toggl which has a list of clients and projects to track against. This makes all my time entries feel together and easy to see at a glance. I can start a new timer in a few seconds and bounce between clients and projects and end up with 15 different entries through the day and easy to see them all. I don't find that simplicity within project management apps.
My ideal project management app would find a way to have that simplicity in its time tracking.
And the app doesn't need to try and become my billing tool, I have professional tools for billing. I don't know why every tool today wants to be your invoicing app too, it's annoying!