28 · Timesheets
Track time across all the work you do in a day — tickets, projects, and ad-hoc activity that doesn't fit either bucket.
Where to find it
Sidebar → Timesheets or /timesheets. Requires the timesheets
feature.
Concepts
Time entries come in three kinds — every entry is exactly one:
| Kind | When to use |
|---|---|
| 🎫 Ticket | Work attributed to a helpdesk ticket. Links to the ticket so the time also rolls into that ticket's billing log. |
| 📋 Project | Work on a Project. Rolls into the project's total minutes for invoicing/reporting. |
| ✏️ Manual | The "general" slot. Anything you did outside the system — phone calls, walk-ups, paperwork, training. Description required. |
Existing helpdesk billing entries (the Log time button on a ticket) are TICKET-kind, so they appear in the Timesheets view automatically — you don't have to log them twice.
Layout
+------------------------------------------------------+
| ‹ Prev week This week Next week › 27 Apr – 3 May |
| [+ Log time]|
|------------------------------------------------------|
| Total this week Billable Tickets Projects Manual |
| 7h 30m 4h 15m 3h 2h 30m 2h |
|------------------------------------------------------|
| Monday 27 Apr 2h 30m [+ Add] |
| 🎫 Ticket #1234 Server move… 1h [Edit] [✕] |
| 📋 Project SNAG-014 Acme 1h 30m [Edit] [✕] |
|------------------------------------------------------|
| Tuesday 28 Apr 45m [+ Add] |
| ✏️ Manual Customer onsite call 45m [Edit] [✕] |
|------------------------------------------------------|
| Wednesday 29 Apr 0m [+ Add] |
+------------------------------------------------------+
📷 Screenshot placeholder: screenshots/timesheets.png
Logging time
Click + Log time (or the per-day + Add button to pre-fill the date). The modal asks:
- Type — Ticket / Project / Manual.
- Ticket or Project picker (only the relevant one shows).
- Description — required for Manual; optional otherwise.
- Date + minutes (5-minute increments by default).
- Billable flag.
Click Log entry. The day total updates immediately and the entry shows in its day bucket.
⚠️ Caution. Time entries on Tickets are the same row as the ticket-side time log. Editing here updates the ticket's total too.
Editing & deleting
Each row has Edit / ✕. Edits keep the entry's ID stable, so SLA / billing references don't break.
You can change a Ticket entry to a Project entry by editing — the backend swaps the FKs in lockstep. Useful when you logged work to the wrong place.
Week navigation
- Prev / Next week — moves by 7 days.
- This week — jumps back to the current ISO week (Mon–Sun).
The summary cards re-aggregate as you navigate.
Export
There is no CSV export from the Timesheets page itself — use Admin → Reports for multi-week / multi-user exports.
Permissions
| Action | Required |
|---|---|
| View / log time on the Timesheets page | any user with timesheets |
View someone else's timesheet (?userId=) |
SUPER_ADMIN, ADMIN or MANAGER |
⚠️ Caution. The staff time API (POST/PATCH/DELETE /api/v1/time)
scopes writes by tenant (orgId) only — it does not check that the
entry belongs to the calling user. Any user in the tenant can edit or
delete any time entry in that tenant. Only the timesheet view of
another person is gated (to MANAGER/admin); the write endpoints are
not per-user restricted.
Vendors (Phase B)
The platform also supports time tracking by external vendors via the
vendor portal at /vendor-login. Vendors only see entries they've
logged themselves and the projects they're linked to via the
Project vendors join. See Vendor portal once that
phase ships.