Time tracking that lives inside other tools: a timer appears on your issues and tasks in the project tracker you already use, and the hours roll up into reports.
Build me time tracking that lives inside the tools I already use, replacing Everhour: a timer on my issues, budgets per project, and reports from the same data. STACK - Node 20+ with Fastify - SQLite through better-sqlite3, WAL mode - A browser extension, Manifest V3, that injects a timer into other web applications - Caddy in front THE DATA MODEL - integrations: id, kind, base_url, credentials_encrypted, is_active, last_sync_at - external_items: id, integration_id, external_id, kind, key, title, url, project_external_id, status, assignee_external_id, closed_at, synced_at — issues, tasks and cards, mirrored - projects: id, name, client_id, external_ref, budget_kind, budget_amount, budget_hours, is_billable - entries: id, user_id, project_id, external_item_id, description, started_at, ended_at, duration_seconds, is_billable, source, created_at - rates: id, scope, scope_id, user_id, hourly_cents, currency, effective_from - estimates: id, external_item_id, hours, set_by, set_at - Time is attached to an external item by its identifier, never by its title. A renamed issue must not orphan a week of tracked hours THE EXTENSION, WHICH IS THE WHOLE PRODUCT - Content scripts per host, each one small and independent: find the issue on the page, read its identifier, inject a start button and a running total - The identifier comes from the URL or from a stable data attribute, and never from scraped text. Write a per-host adapter with a single function: given the document, return the item's identifier, key and title - When an adapter cannot find the item, the button says so plainly and offers a manual attach. A silent failure means hours land on nothing - Every adapter has a fixture — a saved copy of the page — and a test against it, so a change to the host application is a failing test rather than a mystery - The extension talks only to my own server, with a token from a sign-in flow. No third-party requests, and the permissions are per host rather than all sites - Say this in the README: these adapters break, and maintaining them is the ongoing cost of the tool. Pick three hosts and keep them working rather than twelve that half work SYNCING - Pull projects, issues and their status from each integration on a schedule and on demand - Store the external item so reports work when the source is unreachable, and so a deleted issue still has its hours - Push nothing by default. Optionally write the tracked total back to the item as a field or a comment, off unless asked - Respect rate limits with backoff and honour the API's own headers TIMERS AND ENTRIES - One running timer per user, enforced with a partial unique index - An entry is two instants and the duration is derived - Start from the extension, from the web interface or from the API - Timer left running overnight is flagged and offered for trimming, never trimmed silently - Manual entries against any item or against a project directly BUDGETS - Per project or per item: hours or money, one-off or recurring monthly - Progress against estimates per issue, and against the budget per project - Alerts at thresholds to the project owner, once per threshold, never repeatedly - Over-budget is visible in the extension too, on the item itself — the warning is useful where the work is happening, not in a dashboard nobody opens REPORTS AND INVOICING - Group by client, project, item, person, day or tag, and filter by all of them - Billable amount from the rate in force when the work happened - Margin from the cost rate against the billable rate - Export CSV and a client-facing PDF, and mark entries invoiced with a reference so nothing bills twice - Everything computed from entries at query time; no stored totals OPERATIONS - .env: DATABASE_PATH, BASE_URL, SESSION_SECRET, ENCRYPTION_KEY, SMTP_URL - Integration credentials encrypted at rest with a key from the environment - Migrations on boot, each once - Nightly backup off the machine, restore script - Health endpoint that reports the age of the last sync per integration WHAT MATTERS MOST The adapters. Build one host end to end — find the item, inject the timer, attach the hours, survive a page navigation in a single-page application — and use it for a week before adding a second. The rest of this is a time tracker; the extension is the reason to build it at all. Give me the repository, the extension, one host adapter with its fixture and test, migrations, .env.example, and a README with deploy steps behind Caddy and instructions for loading the extension unpacked.
What you lose
- Browser extensions that inject a timer into a dozen project tools and keep working as each changes
- Budgets and alerts per project against tracked hours
- Reports and invoices generated from the same data
If you would rather not build
- Toggl Track with its browser extension
- A CSV of task ids and minutes
What it costs
as published on their pricing page
| Plan | Billed monthly | Billed yearly | Last read |
|---|---|---|---|
| — | $10/mo | — | — |
Their pricing page is where these came from. Seeing a different price? Tell us.
The escape hatch
open source · no votes, no paid placement
Why this verdict
our own opinion · changed only by a person
78/100
Verdict yes at 78. Syncing the task list instead of writing a browser extension per tool is what makes this a weekend.
History
tracked since 10 Aug 2026 · nothing is ever overwritten
Questions about Everhour
answered from the record above
Is Everhour free?
No — the plan we track is $10 a month. Team at $10 per user per month billed monthly, cheaper annually, with a five-seat minimum.
Can you replace Everhour by building your own?
YES. Replaceable in one session with an AI coding agent. Replacement score 78 out of 100, build time one session. Read what you lose before you decide.
How much does Everhour cost?
$10 a month on Team — $120 a year. Recorded 10 Aug 2026.
What do you lose by replacing Everhour?
Browser extensions that inject a timer into a dozen project tools and keep working as each changes; Budgets and alerts per project against tracked hours; Reports and invoices generated from the same data. If any of those carry weight for you, keep paying.
Is there an open-source alternative to Everhour?
Yes: Kimai, Traggo. The prompt on this page is for when you want it your way instead.
Related entries
same category first, most replaced first
Every week, something stops being worth paying for.
New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.
free forever · no tracking pixel · stored here, never passed to anyone

