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.

Rebuilt Timesheets Ninja login screen in a browser window and on a phone, a white card on a dark background
Rebuilt screen with sample data. Every client gets its own address and picks the photo behind the card; here two sample backdrops instead of a real photo.

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.

Rebuilt Timesheets Ninja day entry on desktop and phone: date bar, input row with duration, work type, project and comment, and the overview of the day
Rebuilt screen, on desktop and phone. Projects, names and hours are invented examples.
Diagram: a field showing 3:30 next to a timeline from 09:00 to 12:30, with a swap icon between them and a small astronaut
Two ways to log the same half day. The app remembers which one you prefer.

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.

Rebuilt Timesheets Ninja report screen: entries per project with totals on the left, a summary on the right with the budget in black and the value of the hours in green or red
Rebuilt screen with invented projects, hours and rates. Bottom right, the second project just crosses its budget.
Diagram: a bar in which three gradient segments almost fill the outlined budget, with small labels for hours and hourly rate and an astronaut sitting on the edge
Hours times hourly rate, against the budget. As long as there is room left, it stays green.

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.

Rebuilt Timesheets Ninja admin screens: a list of projects with budgets and a list of work types with rank and hourly rate
Rebuilt admin screens with sample data. The hourly rate on a work type decides what an hour is worth in the report.

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.

Diagram: a clock face with almost three quarters filled in by a colour gradient, and a small astronaut floating in the middle
The only dial in this project. The app itself does not have one.
Next project

The great magician of small noses

Website
The great magician of small noses
Previous project: The scent of innovation B2B platform