Problem
Kan has no built-in way to record actual time spent on a card. Teams that use timers and manual worklogs have to keep that history in a separate product, so card context, permissions, reporting, and exports become fragmented.
This is related to #312, but deliberately narrower. Estimates can reasonably become custom fields; actual time is a history of dated entries attributed to members, plus server-side state for running timers.
Proposed behaviour
- Time tracking is enabled per board.
- A member can start and stop one personal timer.
- Time can also be added manually with a member, date, duration, and optional comment.
- Cards show total time, per-member totals, and paginated worklog history.
- Card history can be filtered by period and by member.
- A board report supports period, member, list, card, and label filters.
- Reports can be exported as detailed, summary, or analysis-friendly CSV.
- Workspace permissions control viewing, adding, editing, deleting, and managing other members' entries.
Disabling time tracking hides the feature without deleting its history. Existing running timers can still be stopped or discarded.
Implementation
A working implementation is ready in habralab/kan:feat/time-tracking, rebased onto the current main.
The implementation uses generic worklog and time-tracking concepts. The Everhour importer used for our own migration is separate and is not included in this proposal.
It has repository, API, utility, and browser coverage, including concurrent timer starts, permissions, lifecycle boundaries, pagination, filtered reports, CSV safety, and cross-board move protection. We have also exercised it against a production-sized imported dataset.
The branch includes a user and operations guide. We can split the implementation into smaller PRs if that makes review easier.
Screenshots
Board and card workflow


Board report

Permissions and CSV export


Out of scope
- estimates and story points — a small part of my team uses them, and I am still considering this direction, but I have not received enough useful feedback from them to propose a good model yet;
- billing, budgets, and invoicing;
- automatic activity detection;
- migration from third-party time trackers — our fork technically has a separate importer for Everhour Power-Up data, but it is migration-specific and is not ready to be treated as a supported feature.
Would you like to work on this feature?
Problem
Kan has no built-in way to record actual time spent on a card. Teams that use timers and manual worklogs have to keep that history in a separate product, so card context, permissions, reporting, and exports become fragmented.
This is related to #312, but deliberately narrower. Estimates can reasonably become custom fields; actual time is a history of dated entries attributed to members, plus server-side state for running timers.
Proposed behaviour
Disabling time tracking hides the feature without deleting its history. Existing running timers can still be stopped or discarded.
Implementation
A working implementation is ready in
habralab/kan:feat/time-tracking, rebased onto the currentmain.The implementation uses generic worklog and time-tracking concepts. The Everhour importer used for our own migration is separate and is not included in this proposal.
It has repository, API, utility, and browser coverage, including concurrent timer starts, permissions, lifecycle boundaries, pagination, filtered reports, CSV safety, and cross-board move protection. We have also exercised it against a production-sized imported dataset.
The branch includes a user and operations guide. We can split the implementation into smaller PRs if that makes review easier.
Screenshots
Board and card workflow
Board report
Permissions and CSV export
Out of scope
Would you like to work on this feature?