Since I've started to take on clients, I've needed a decent way to track my time and invoices without much overhead. Way back, I purchased a Joomla extension called JForce to handle this but found that it was inadequate for my needs for time tracking. Recently, I came across Harvest. Harvest is an online service that tracks time and can even manage estimates and invoices. It's time tracking interface was nice and came with an iPhone app that allowed me to easily track my time. But unless I paid a monthly fee, I was limited to the number of projects and clients I could create. So, I created one Freelancing project with a task for each of my clients. Using Harvest's reporting features, I was able to differentiate between my clients for time entries.
I couldn't use Harvest's invoicing feature because of the method I was using it. Plus, I wanted to be able to have more control over my invoices, who had access to them, etc. So I used JForce for invoicing and Harvest for time tracking. JForce allowed me to create invoices via my own site and give clients access to only their own invoices. Some of my clients asked if there was a way for them to see how many hours of work I have done for them at any given time. I didn't have a way to do this of course since Harvest didn't have a way to display time sheets to clients. Thus, the thought of JHarvest was born.
At first I thought that I would simply create a Joomla extension that pulls information from Harvest and displays it to the user. This is still my plan so that JHarvest can be a standalone extension. It will allow admins to match Joomla users with JHarvest clients. Any information for that client will be made available for viewing to the matched Joomla user via Joomla's frontend. I have yet to fully design how this will function and look so feedback on this would be nice!
But in addition to that, I plan to hook it into other components. JForce just rebranded themselves as JForce PM. This time, I think they got it right for the most part. The only thing really lacking is that they do not have the time tracking features of Harvest such as timers and decent time sheet reports. So in addition to JHarvest being a standalone extension, I'm creating it to have a "plugin" system where it can be extended to sync with third party extensions. The first will be JForce where basically the user will be able to sync Harvest information into JForce. I'm creating three sync modes for this. The first is "Project" which will sync project to project, task to task, time entry to time entry, etc. The second will be "Task" where the admin will be able to define a default JForce task (which is by nature assigned to a specific project) for each Harvest project assigned task. Each Harvest time entry will then be synced as a JForce time entry for the defined JForce task. The final mode will be "Time Entry" where the admin will be able to assign each Harvest project assigned task to a JForce project. Each Harvest time entry will either a) become a new JForce task with the entry's note as the task's name (and of course a new JForce time entry as well to track hours). Or, just a new JForce time entry if the entry does not have any notes and it will be associated with the defined default JForce project/task.
So far, I have the backend almost fully functional. It downloads all Harvest data and stores it locally. That data is kept up to date with each sync. I have it 90% interfaced with JForce (enough to where I can use it for my purposes). There are a few things left to do with the backend before I start working on the frontend. First, it needs a safe way to delete local data that no longer exists in Harvest if the admin chooses to. The other 10% of JForce integration also needs to be completed. Finally, I need to design/code ways to display properties such as cost per hour, budget, etc for individual projects, tasks, and contacts. Once that is done, I'll start coding the frontend.
Eventually I would like to be able to feed data back into Harvest. But that will be after I have the initial release of JHarvest available. My first goal is to simply be able to retrieve and present Harvest data to Joomla users in a meaningful way. Then, I'll start adding new features such as feeding data back to Harvest and support for multi-user Harvest accounts.
I would love to hear about ways this would be useful to the Joomla community, if at all :-). If nothing else, I'll use it extensively until JForce designs an iPhone app and improves their time tracking features ;-). Would you be willing to pay for such an extension? If so, how much? In what ways would you like it to present data to the Joomla end user?
Leave comments below.
and tagged with jharvest, harvest, time tracking, joomla, integration, sync, jforce, pm, project managment, tasks, invoices, estimates