To set the stage, let me just say that as someone who works for himself you would expect me to me diligent about tracking time spent on each and every task I work on. After all time spent == dollars made. Unfortunately, my right brain gets in the way and complains at all costs about having to stop what I am doing to track the time I spend. So, I set out to create a tool that would allow me to easily track my time with the least amount of effort.
My requirements were basically this:
- Standalone app not needing to be connected to the internet - After all, I can't always connect to the internet when I am working in a booth at Wendy's
- Ability to work on multiple projects, each having a varying number of sub tasks.
- A visual way to specify how my time is spent - Dragging a task onto a calendar for example.
- A way to report on time spent, monthly, weekly or overall
- Ability to export a spreadsheet (Excel) for use by others - The person creating the invoices for example
- A simple way to switch between tasks
So out of the gate I wanted to use Flex. However, when I first conceived of this app, AIR or Apollo for that matter didn't exist. I had thought of creating a Java Swing app but quickly decided that it would be no fun to build and probably take a long time. Plus, I really had no idea how to code all the slick Drag-n-Drop stuff I wanted to do. So I originally decided to build an app that would run in the browser as a Flex app. Before long Apollo was all the buzz and looked promising. I now had my technology of choice so off I went. All I needed was time to work on it... There's that "time" thing getting in my way again.
Finally I found a window of opportunity where I could sit down and start proptotyping. Then I had the "ah-ha" moment where I realized that my prototype, was actually turning into the real app. Now that is Agile!
The app is far from finished, however it is at the point where I can use it to track my time. It isn't quite ready to post for download but some screens are shown below. When down, this will be free to download and use.Dragging a project or task from the left onto the calendar creates an entry for it. To indicate you are currently working on a task it can be dragged onto the "currently working on" area at the top.
Entries can be resized or moved by dragging. Double clicking brings up the edit panel.
While entries are shown on the calendar, you can also see them in grid format by going into project view and selecting the Time Entries tab. The "Properties" tab (not shown) is where you specify the task name, select a color, add a time estimate for later comparison with actual time, and more.
Reports are located in the Reports section. More are coming such as variable date ranges for selected a two week interval for example
Launching a report gives you a chart showing the breakdown for the time period selected.
That isn't everything, but I need to save some for later. Features coming up include:
- More reports
- Condensed view
- Printable reports
- Export to excel
As a side note, if you look carefully at the summary chart you will see that the time spent on the TimeTracker was only about 14 hours. That 14 hours is the time I spent on this since it worked enough to actually use. I probably spent about 8 hours (I don't know the actual since I didn't track it anyway...doh!) getting the initial app working which didn't have the weekview, drag-n-drop, charts, etc. So all in all, this thing represents less than a weeks work so far. Try doing that with Swing.