WorkMaid, designed for workflow


In 2008 we built a simple web based timesheet system. Despite its simplicity it served us well for four years, during which time we thought a lot about enhancements to make our workflow smoother. Finally WorkMaid was rewritten, providing a very smart new system and an opportunity to reflect on how user interface design can positively impact workflow.

Key requirements

  1. Capture must be robust: even if the app fails in the browser, data mustn’t be lost.
  2. A phone call can make us switch tasks, and we want to immediately record that change and flick back again afterwards.
  3. Our clients span the globe. We wanted WorkMaid to automatically convert between currencies
  4. It must run on devices of all sizes from smart phones to tablets to desktop PCs.
  5. During development we also realised how much simpler it would be to have invoices generated automatically.

How we built it

For continuity we retained the same normalised MySQL database structure as WorkMaid 1, but replaced some of the complex select statements with database views. Some of the views were complex too, but we only had to write them once. We stuck with PHP on the server, but used Fat Free Framework to simplify routing and added modules to minify and merge javascript files and stylesheets.

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.

Time entry

selectThe 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)

clienteditorOn 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.


hourseditorIf 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.



invoice01WorkMaid 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.


invoice02WorkMaid now generates a PDF file for the selected client, with the client details, currency, New Zealand tax where applicable, and a PayPal link to simplify payment for those clients who prefer to pay that way.

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?

  1. We couldn’t find the mix of features we wanted in any of the systems we looked at.
  2. We had four years of timesheet data in our own system and wanted to continue using that to critique and improve our project estimates.
  3. 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.