Counting hours, and nothing else
In the spring of 2021, Element Architecten in Ghent asked us for a time tracking tool as sober as their buildings. The result was Timesheets Ninja, a Major Tom product of our own: one screen per day, a report that puts the budget next to the hours worked, and nothing else.
The time tracking industry will happily sell you timers, kanban boards, approval flows and a dashboard full of dials. An architecture practice needs almost none of that. It needs to know how many hours went into a file, which stage they went into, and whether the total still fits what was agreed.
Element Architecten in Ghent asked us for exactly that in the spring of 2021. We liked the idea enough to turn it into a product of our own: Timesheets Ninja. The name is ours, so is the blame.
One screen per day
You log in and you are already where you need to be: today. A grey date bar at the top to move between days, one row of fields below it. Duration or from–to, work type, project, comment, add. Done.
If you would rather type "3:30", type 3:30. If you would rather enter 09:00 and 12:30, click the little icon next to the label and you get two time fields. The app remembers which of the two each person uses, so nobody has to switch back every morning.
The project list is searchable, because past two hundred files nobody scrolls any more. Below the input row sits what you already logged today, with two buttons per line: edit or delete. An admin can also log time for someone else, for the colleague who produces their notes on Friday afternoon.
Hours times rate, next to the budget
The second screen is the report. Pick a period, optionally a person and a project. On the left, every entry appears grouped per project, with a total per project and a total at the bottom. On the right sits the summary: hours per stage and hours per person.
And below that, the two numbers that actually matter. Every work type carries an hourly rate, so every hour logged has a value. The app puts that value next to the project budget. Stay under it and it shows up in green. Reach it or pass it and it turns red. That is the entire reporting layer: no chart, no legend, one amount that is either green or red.
A regular user only sees their own hours in that same screen. An admin sees everyone and can export the lot to Excel: user, project, work type, date, start, stop, total and comment. Our own 2021 pitch shouted "Move aside Excel", and yet the export was there from day one. People want their columns.
Four admin screens, and that is the lot
Behind the Admin button are four lists. Projects: name, reference or automatic file number, budget. Work types: name, position in the dropdown and hourly rate, because that rate feeds the green or red line in the report. Users: name, email and whether someone is an admin or a regular user. There are no other roles, and none turned out to be missing.
And then Background: the photo behind the login screen. That is the whole white label story. Every client gets its own address, its own photo and otherwise exactly the same app.
Under the bonnet
Kirby with MySQL behind it. Every client is a page in the CMS; projects, users, work types and all entries are virtual pages served straight from the database. That gives each client its own address and its own data on a single installation, without us maintaining a copy per practice.
The first version ran on Kirby 3.5.4, from that same 2021. In August 2026 we migrated it to Kirby 4.8. That is not a new project, that is maintaining a house people still live in.
The sales page on timesheets.ninja went up once and came back down later. The tool itself simply kept running.
What it does not do
No timer ticking along while you work. No approval flow where a manager has to click first. No invoicing, no holiday requests, no week view with draggable blocks. No app in a store either: it is a website, and it works on your phone.
That is not laziness, that is the brief. Every extra button has to be understood, filled in or ignored every single day after that.
Parts we reuse
Timesheets Ninja shares its foundations with other work of ours. The login logic comes from the same family as the appointment system for Huisartsen ’t Zuid, and the trick of serving a database as CMS pages also runs the ordering module for Ceres Pharma. It saves time, and time happens to be the subject here.
Built for architects first, but there is nothing architectural about it. Any practice that writes hours onto files can use it.
Related work
Other work that connects to this.
The great magician of small noses
Website →