After a few years of on-and-off work on this project I think it’s finally time I release a beta.

As I know a lot of you people on the forums here are freelancers, you have probably tried online time-tracking applications before. At least I have… Although, I have never been completely satisfied with a single one. Being a dev, I decided to build my own. Thus TimePanther.

So, I need beta testers. Eventually, this app will no longer be free. However, I have decided that any Yii dev that signs up now (until beta ends), will get to use the app free, forever (even post-beta). Non yii devs can use the site for free just until beta ends.

The only thing I ask is that you try to give feedback… But even if you don’t, just the fact that you are stressing the site is valuable to me.

Upon signup you are required to submit your Yii forum ID. Eventually I will PM you with a link to confirm your identity, but you can use the app before then.

If you are a Yii forum member, you need to use the special registration form to sign up in order to get the free deal:


BTW, the site doesn’t look quite as good in IE (yet, anyways). I used some shadow/round corners/etc that won’t show in IE.

If you’re a freelancer, or just need to track your time, this app just might be for you. Let me know what you think. Ideas/suggestions/criticism/bug reports, all welcome.

I think there is still a lot of improvement that potentially can be done, but as it is, I think it is already very nice. I have already been using it for my own freelancing projects for a long time. IDK exactly what features will be paid and what will not yet, but remember as a Yii dev it will be free for you forever.

Extra info:

~ Jonah Turnquist

Nice project overall. Here’s what I’ve encountered during testing:

  1. Getting "You must have javascript on" from time to time.

  2. When dragging items it shows "add project", "add timer".

  3. I was able to drag timer to "add timer" and project before "add project".

  4. It’s better to make form fields equal width at http://www.timepanther.com/site/contact.

Can you share some info about internals?

  1. How tree is stored? Adjacent list or nested set?

  2. Have you used some community extensions?

  3. Anything special about implementation?

Thanks for the feedback. I will fix the reported bugs asap… glad you found them. As for bug#1… idk how to catch that. Could you check if any JS errors occurred if it ever happens again? Just like check your firebug console or whatever you use, and send me the error message.

I am using a different tables for clients, projects and timers. Since they are actually similar, I probably could have used one table for all of them. It uses nested sets. There is a parent_id for each (which points to another table. Eg timer’s parent_id points to project table). Also each table has a rightNode_id field, which specifies the node below it. This way ordering can be remembered.

I used my own mail extension… besides that, I didn’t use any extensions that I can think of right now. It is rare that I use another person’s extension, because in the time it would take to learn it, I could almost build it myself and have it be custom to my app.

It was pretty tricky to get everything to work both on the server side and the client side, as this app if JS/ajax intensive.

I think what makes this special compared to other time tracking apps is that timers are made to be used for multiple timing sessions… I usually use one timer per task… and my tasks are usually broad

Probably the most tricky think to implement is the archiving system. Try it if you haven’t… You’ll understand why

Your own NS implementation or any specific extension?

More things:

  1. My workspace got empty somehow.

  2. Logo is not clickable. Will be good to link it to homepage for not logged-in users and to workspace for logged-in users.

I used my own NS implementation.

You’re saying your clients/projects/timers disappeared? what if you refresh? It seems they are still in the DB…

Looks like it’s a server issue. It fails to respond sometimes and closes connection.

Thanks. I’ll work on this tonight. I’ll probably switch hosts or something if it is a server thing.

Nice application.

I have the following potential issues:

  1. It’s possible to add names that continues off screen.

  2. The same timer can count different time values in multiple browser tabs (finally this led to some problem reported in a popup dialog - error code: "error" IIRC).

  3. It’s possible to continue accumulating time to an already paid timer. No warning given. It seems there will be no way to separate the additional time.

  4. It’s possible to continue counting time in archived projects.


@tri thanks!

#1: I have been pondering solutions to bug #1. I think I will have it cut off and display ‘…’ at the end if the name is too long… Can’t believe I didn’t think of it earlier actually…

#2: Why would you want the workspace open in multiple tabs? I should probably enforce only having the workspace open in one tab at a time… Unless there is a good reason not to?

#3: Thanks, I’ll add a warning

#4: IDK if this is a bug or feature. Maybe I’ll just add a warning.

I’m more than happy about the feedback I’m getting here. Thanks guys!

Hi! Very good application.

Do you plan to add some reporting / data export features?

It would be nice to be able to see for example monthly report for selected client / project and be able to export is to the csv / xls.

Regarding the message "The timer is still running. If you leave this page, the timer will keep running. Are you sure you want to leave this page?". I think this is what the user expects, so no there is no need for this message (at least not the every time, but only first time maybe).

Also this works only when clicking left tree items, but does not work for the top menu links.

I think it is better to add some indicator to the timer name in the left tree which will notify the user that timer is running now.

And regarding running the workspace in two tabs. Now there are issues with this, like if you stop the timer in the ont tab then it continues counting in the another tab. Close to the real life use case - I am opened the timepanther on the my work computer in the office and started some timer. Then I live my comuter on and go home. At home I log in to the timepanther and stop the timer (for example this was the timer to see how many time I spen on the road from the work to the home). The next morning I will see that timer still counting on my work comuter.

So I think you need some more advanced synchronization between the server and the client.

#2: User seb just gave a good explanation as to why this needs to be addressed.

#3/#4: I think it makes sense to seal a timer on received payment. The application computes the amount to be payed. When payed, shouldn’t be changed. Archived projects should at least need to be reactivated before being able to add costs (by using a new timer).

New observations:

  1. It’s possible to make a “global” change (project level) to hourly rate without a warning that the individual timer rates will be lost.

  2. [Enh] The way I perceive the timer concept is "one timer per project activity" and a new timer will be needed for each payment period. Thus it should be useful with accumulated time and payment at project and client levels. Perhaps also support for adding static costs as a lump sum.

  3. [Enh] It would be great be able to set a resolution for the amount computation, e.g. each started 10/15/30 minute period.


  1. If I decide to start more than one timer in the same workspace, they seem to behave strangely. I don’t know why I would want to do this, perhaps counting low-rated stand-by time and performing other work simultansously simultaneously.

Edit: ugly typo, sorry for that


Love this feedback


Yes, and it will likely be for paid members, but of course free for you guys.

I think think having an indicator somewhere (probably left tree) about what timer(s) are running outside of the timer page is a really good idea. Maybe just an icon near the timer on the tree. This would definitely allow me to get rid of the warning.

Thanks… Didn’t know about this bug.

I posted a question on Stack Overflow on how to do this. It will be difficult to implement, so it’s not my top priority. I don’t want to poll the server, so I will use something like http://socket.io/



This sounds reasonable.

Good catch. I’ll have to add a warning.

I actually like to use one project per billing cycle for this app. If you look at a project you will notice it actually reports the time and revenue of all (and only) the timers within it. Also, you can work with lump sum in this app. Open a project or timer, and then open the "payment" tab. Hit "configure". Then just select "single payment", instead of the hourly rate option.

I like this idea, it could be an option under the payment settings.

This seems to work for me… I’ll have to do some more testing


[s]Hi Jonah, very nice app!!!!

I’ve played a bit, and found somethig:

I’ve registered, the I go to my workspace.

I ve configure some of the examples proyects and track time in the project 1, timer 1. Then I’ve archived it.

Played a bit more.

Then, I click in the in the archived project in the left navigation.

Once in the archived proytect I’ve deleted it. But this deleted all my proyects/timers AND clients.

Well this (and some of the issues reported before) is what I’ve seen until now.

Will let you know if I found something else.[/s]



Sorry, I’ve figured out on how this works (the delete action).

But I think a better diferentiation between archive/un-archive and delete task should de done.

Actually the delete action will delete an item regardles if it is archivded or not.

In fact, if you have two proyects for some client and only archive one of them.

Then you click in the archived proyect. And you navigate to the client IN THE ARCHIVE section, and you delete it, then all the proyects of the client will be deleted.

Note that the other proyect of that client is still unarchived.

I think you must throw a waring here…

I see your point here. The best solution I can think of now is to add a warning that all of the client’s/project’s sub-nodes (which are projects and/or timers) will be deleted, whether they are archived or not.


EDIT (only so not to double post):

I have by now fixed many of the bugs above (but not advanced server->client sync and a couple of others)

@tri I do not think it is actually necessary to give a warning when payment options are set on project level, while payment settings are already defined on timer level. This is because it is actually not destructive. If you remove the payment options from the project level, the timers will resume their old settings.


nice tool. I think that is missing option to change account settings (email, password)

@qwerty Hmm yes I do need to implement account settings still. Thanks for the reminder.

I’ve just added a “Feedback” tab on the right of the page (thanks to uservoice.com) as well as added another type of report: time breakdown. It’s a new tab under client and project pages. Let me know if there are any other types of reports you guys would like.

an error occured http://www.timepanther.com/timer/view/id/185

Sorry about that… I forgot to handle the empty case for the new feature… Fixed now. I knew I should have done more testing…