- Capture must be robust: even if the app fails in the browser, data mustn’t be lost.
- A phone call can make us switch tasks, and we want to immediately record that change and flick back again afterwards.
- Our clients span the globe. We wanted WorkMaid to automatically convert between currencies
- It must run on devices of all sizes from smart phones to tablets to desktop PCs.
- During development we also realised how much simpler it would be to have invoices generated automatically.
How we built it
On the front end we used the Twitter Bootstrap framework without any appreciable customisation. We augmented this with Knockout JS to simplify data presentation, and used LESS to craft our CSS.
The Entry tab displays the most recently charged tasks, and updates whenever a new task is started. Switching tasks in mid-stream is as quick as clicking on an existing Client / Project / Task combination. There isn’t an exact match? Pick something close and use task auto completion.
Clients (and projects)
On the Clients tab clients can be filtered by status; select a client and the details are displayed in the editor. As a sanity check hourly rates are automatically converted to New Zealand dollars in real time using today’s exchange rate.
Projects for each client are edited in a similar fashion. They’re listed on the Clients tab once the client is selected; they can be filtered by status and by whether or not they’re chargeable.
Changes to client and project details are immediately propagated to WorkMaid‘s other tabs.
If we ever need to check and edit timesheet entries, they’re listed on the Hours tab – the most recent first, with flexible pagination – and clicking any entry allows all its details to be edited.
Actual times are stored in the database, but for ease of calculation WorkMaid displays and exports all time in six minute blocks – 0.1 hours.
The Status tab summarises chargeable hours, and the revenue those hours are generating converted into New Zealand dollars at today’s exchange rate. We can see at a glance how things are stacking up for the current period.
WorkMaid 1 exported data in a CSV file which was used to manually create an invoice for each client at the end of the month. While rewriting WorkMaid we realised how little effort – and how much benefit – there’d be in having it generate those invoices directly.
The second (and sometimes third, fourth and fifth) page of each invoice contains the detailed hours for the month so the client can easily audit the account.
By investing an additional eight hours in coding up front, WorkMaid is saving us two hours a month. Even better, we can be assured that we’re not miscalculating anything or making any typographical errors while manually creating each of these invoices.
The Reports tab still lets us export CSV files too: we use those to provide clients with progress reports when that’s useful.
Why not just buy a system?
There are thousands of timesheet systems in the world. Why didn’t we just buy one?
- We couldn’t find the mix of features we wanted in any of the systems we looked at.
- We had four years of timesheet data in our own system and wanted to continue using that to critique and improve our project estimates.
- We had a month with spare capacity which reduced the cost of ownership to approximately zero.
What do we think of it now?
At the time of writing we’ve been using WorkMaid 2 for a couple of months. It’s interesting to rank the enhancements now we’ve spent some time with them.
- The new Entry tab is far and away the best feature. It makes it a one click process to change clients in mid stream.
- We look forward to the end of the month and the five minutes it now takes to produce our invoices.
- Automatic conversion of currencies is a good check. Clients prefer to be charged in their own currencies, but it’s easy to get trapped unaware on the wrong side of a drifting exchange rate.