Should I vibe code
Track time, approve entries, and generate basic client or project reports
Solo it's a timer. With approvals it's the record your client disputes and your team gets paid from.
?
Their verdict, the Basic price and the build-time estimate come from their entry, MIT-licensed. Checked 2026-08-04.
?
Our verdict, the regret score and everything below it. Editorial and unsponsored — nobody can pay to be moved.
The honest answer
why the verdict is what it is
One person tracking their own hours is a start button and a table, and canivibecodeit is right that it fits in a sitting. Clockify's actual shape is the other one — several people's hours, an approval step, and a report that turns into an invoice. The moment a second person's timesheet is in your database, three things change at once: you are storing a record of when your colleagues worked, you are defending numbers you did not personally enter, and a rounding rule nobody wrote down is deciding what a client gets charged. None of that is dangerous. All of it is the part you will not finish.
What actually breaks
not "if". the specific failures.
- The running timer, which exists only in one browser tab until it is stopped, and takes the whole afternoon with it when the tab does not survive
- Timezones and daylight saving, where a team across three offices produces entries that are an hour out, duplicated on one Sunday in the year, or negative
- Rounding, because per-entry and per-day rules generate different invoices from identical work and nobody recorded which one you picked
- Approval, which has to be a state machine — an approved entry that is still editable is not an approval, it is a label
- Retroactive edits with no history, so "your team says they billed Tuesday twice" is a conversation with no evidence on your side
- Exports, which are the entire point at month end and the first thing to fall over past a few thousand rows
- Reports that quietly disagree — a project total and the sum of its entries differing because one query filters archived users and the other does not
Is that you?
the verdict is a default, not a law
- It is you, tracking your own hours, and no invoice comes straight out of it
- The entry is written server-side the moment a timer starts, not when it stops
- A human reads the report before anyone's pay or any client's bill is computed from it
- Everything is stored in UTC with the originating timezone alongside
- It holds other people's timesheets, particularly where working-time records carry a retention obligation you would be the one to satisfy
- Invoices are generated directly from the table with no approval trail
- You cannot show, for any entry, who changed it, when, and what it said before
- Anyone's pay depends on a number this produces
If you build it anyway
the checklist, then the prompt that enforces it
- Write the running entry to the server on start, with a heartbeat. A timer that lives only in a tab is data you have not collected yet.
- Store every timestamp in UTC with the originating timezone in a separate column, and convert only at render time. Never store local time.
- Make an approved entry immutable. Corrections are new entries with an author and a reason, never an update in place.
- Choose one rounding rule, apply it in exactly one function, and print it on the invoice. Two rounding implementations is two invoices.
- Keep an append-only change log per entry from the first commit. It cannot be reconstructed later, and it is the only thing that settles a billing dispute.
- Make export a first-class feature, not a script — CSV with user, project, UTC timestamps, rate and approval state, on demand.
- If this holds anyone's hours but your own, tell them what is stored and for how long, and set a retention window you actually enforce.
I am building a team time tracker with approvals and client
reports. These numbers become invoices, so treat entries as accounting records,
and argue with me if I ask for the dashboard first.
1. Persist the running timer server-side on start, not on stop, with a
heartbeat. Tell me explicitly that a timer held in browser state is an
afternoon that will be lost, and the guess replacing it is what gets billed.
2. Store all timestamps in UTC with the originating IANA timezone in its own
column, converting only at render. Before any reporting code, show me what a
shift spanning a daylight-saving change produces.
3. Build the append-only change log before the edit UI: who created an entry,
who changed it, when, and the previous values. It cannot be reconstructed
later and it is the only defence in a billing dispute.
4. Approval is a state machine — draft, submitted, approved, locked — and an
approved entry cannot be edited. Corrections are new signed entries with a
reason. No admin override that silently rewrites history.
5. One rounding function, its rule from configuration, recorded on every report.
Two rounding implementations is two invoices from the same work.
6. Build export before reporting: CSV with user, project, UTC start and end,
duration, rate, billable flag and approval state. It is my migration path.
7. Reject overlapping entries for one user, or make the overlap explicit. A
model that allows them silently makes every total ambiguous.
8. Reports read through one query path. If a project total and the sum of its
entries can ever disagree, show me the queries rather than the chart.
9. Everyone can export their own data; nobody sees anyone else's unless they are
an approver, checked per request on the server.
10. Ask me whose hours this will hold. If the answer is not "only mine", tell me
what I owe those people in disclosure and how long I intend to keep it.
11. Out of scope, and say so: payroll, tax, and anything that pays a person.
This produces a report a human reads before money moves.That one keeps you out of trouble. For the prompt that actually builds it, canivibecodeit.com has one.
their build prompt ↗Or don’t build it
the boring option, and the way back out
At the second person. $4.99 a seat buys the approval workflow, the mobile and desktop clients people will actually remember to press, and the export your accountant asks for in a format they have seen before — and Clockify's free tier already covers more of this than most small teams need. Building it makes sense only while you are the entire team.
$4.99/mo is cheaper than your weekend.
Export is the exit: entries as CSV with user, project, UTC timestamps, rate and approval state, available on demand rather than as a one-off script written on the way out. Every tracker on the market imports something close to that. What does not travel is the change log, so if a billing dispute is live when you migrate, keep the old database read-only until it is settled.
Mature open-source time-tracking application with projects, reports, and exports.
Questions
How is this different from the Toggl Track entry?
Toggl is rated as the solo tool it mostly is: one person, one timer, and a warning about billing from it. Clockify's centre of gravity is the team version — approvals, seats, client reports — so the same lost-timer problem now happens to somebody who cannot fix it themselves, and the output is defended in front of a client rather than in front of yourself.
Is storing my colleagues' hours actually a compliance question?
The obligation sits with the employer rather than with the tool, but it does not disappear because the tool is homemade — working-time records carry retention expectations in most jurisdictions, and a system with no change history satisfies none of them. Practically: keep the log, set a retention window, and tell the people in it what you keep.
What is the single highest-value thing to build first?
Server-side persistence of the running timer. Everything else on this page is recoverable with effort, but a timer that only ever existed in a closed tab is data that was never collected, and the number that replaces it is a guess someone bills a client for.
Every week, someone ships something they shouldn’t have.
New verdicts, the worst thing that landed in the trap, and the occasional incident report. No other email, ever.
A timer and a table. If you bill from it, treat the table like an accounting record.
Nobody disputes your timer. They dispute the invoice it generated, eleven months later, in writing.
A window-title log is the most revealing file on your machine. The good news is that yours never has to leave it.
last reviewed 2026-08-04 · verdict is editorial and unsponsored · shared entry data from canivibecodeit under MIT · not legal advice