I’m glad you asked as I think Fibery has great potential here and I’d be grateful if you guys developed something further natively to take advantage of the design of Fibery to have a first-class Time Tracker Extension.
Here is how I’d see Time Tracking built:
Fundamentally, you should be able to track time two ways:
Manually, when you are done with work, or if you forget to start, or to stop, a time.
As you work. This would involve clicking a button to “start work” and record the time and day of that, and then a button to “stop work.” When you stop, the time entry is closed, and the full duration is recorded.
I am in favor of using a separate Type, perhaps in its own App, called “Time Entries” to house the time logs. I have always preferred Time Tracking solutions that expose Time entries as their own data records, and don’t “hide” the time entries deeper in the backend, which means as a user you get less flexibility with what to do with those entries.
Ideally each Time Entry would be its own Entity in the Time Tracking Type, instead of an entry in fields in the Entity itself where time is being tracked.
So instead of having two fields that Entity, one for “time started” and one for “time completed,” which only allow one time range per entity, you have a relation of one-to-many to the “Time Log” type, which will track each time log as a separate entity. This way you can have more than one time log.
The user would ideally fill in, perhaps via Simple Text field, a description of “What I Did” during this time log Entity. That way, that detail could be viewed at a glance in the Related Entities’ Collections area. It would really be great if that can also go into the Related Entities’ Activity stream so you can view that key info at a glance when looking over the whole Activity of an Entity.
I’d like to be able to record each Time Entry in the related Time Tracking Entity, and then roll up that time spent in the Entity being worked on. This should relate to a “Time Estimated” field which would interact with the “Time spent” rollup field that will fill in based on the time in the Related Time log Entities. There would also be a “Time remaining” field calculated. Ideally, it would be good to be able to update the “Time Estimated” if new information is discovered and the original estimate is wrong. That should be something the Activity Stream of the Entity picks up, so the viewer can see that something happened and why the Estimate changed. The flow would be this: You change the estimate, and the Activity Stream notes “Time Estimate changed from 6h to 8h”. Then, if you write a comment in the Entity such as “I increased the Estimate because we are dealing with a blocker,” that comment does in the Activity Stream right after, so a user reading the stream can see the change of the estimate, and the comment about it, right next to each other in the Entity History.
Re: Permissions, I think it would be great if there is one Type that is a tracking all time, but not visible to all users what is being worked on by everybody as there could be sensitive information, or simply other teams’ data that is not relevant to everybody in the system as the Fibery Instance grows.
All this above I think can be more or less doable in your proposed solution using a related Type. However, when you guys build the Time Tracking Entity, it would be great to get some of this additional functionality:
- upon hitting “stop timer”, a modal to fill in what you did during that particular session. This entry would then enter the Activity stream of the Entity as the “last activity.” I don’t think this can be done now with you suggested solution as I believe we don’t have the ability to pop-up Modals like this in Fibery yet, so perhaps this would come with a Time Tracking Extension you guys would release? But can you, via Buttons and manipulation of JS on them, write that entry from the Time Tracking Type into the Comment Stream right now of the Related Entities?
****Incidentally, the “popping up” of modal would also be very useful for Required Fields, and there’s a request for them here. I would love to have the ability to restrict moving an Entity into “closed” state if a certain field is not filled out in some cases, such as a comment, or a “Simple text” field that you designate for something like “resolution” and you want to make sure for data integrity that is always completed.
- if you hit the “start timer” button, check if an Entity is still in a non-started status, and if so, move to “in progress” or the next state after that. This would probably be set up by some Automation rule at a Type-level, but is a super useful feature. My Team frequently forget to move something to “in progress” and it would be great to get this automated help.
Like @Haslien, I’d like to be as granular as possible, and also use the power of Vizydrop to create bespoke reports via the deep lookups you guys offer. Flag up where we are spending too much time, not enough, as you suggest… And I think if you can create some out-of-the box timesheet solution via Vizydrop, that would be great. This is all the more relevant with your guys growing list of integrations. You could easily integrate via API with something like Hubstaff to then process payments based on a timesheet. I have a big need here as I have contract developers who track time and I have to pay via things like Payoneer, Transferwise, Upwork, etc. and would much rather they track time in Fibery, get their timesheet, ideally pull this into my accounting program (again via API hookup to say Quickbooks), and then I can just pay them with Paypal.
I hope all this is useful and my team is very desperate for native time tracking in Fibery!