For a freelancer the useful part is proof of work: hours, an activity percentage and a few screenshots a client can check. A one-person version is a weekend: an Electron tray timer, input-event counts, random screenshots and a weekly timesheet that exports to HTML or PDF with an invoice draft. The weekend goes on the same fussy capture work as any desktop tracker: macOS permissions, idle handling and the black screenshots you get before permission is granted. What stays behind is everything for a team: scheduling, approvals, payroll payments and the integrations. Hubstaff's two-seat minimum also means a solo freelancer pays for a seat they don't use.
Before you buildHubstaff has no free plan, only a 14-day trial. If you bill by the hour and don't need screenshots, Kimai or solidtime cover timers, rates and reports for free.
Build me a freelancer time tracker with activity levels and client timesheets to replace Hubstaff. Requirements: - Node.js 22 + TypeScript, packaged as an Electron tray app (`electron`, `electron-builder`). `npm start` shows a tray menu and a settings window; start and stop a timer per project and task. - Storage: better-sqlite3 in Electron's userData folder: clients, projects (hourly rate, weekly cap in hours), tasks, time segments (start, end, project, task, note, manual flag) and 10-minute activity blocks (key events, mouse events, percent of minutes with input). - Activity: `uiohook-napi` counts input events only and never records which keys were pressed; `active-win` names the app and window title; `screenshot-desktop` takes one screenshot at a random moment in each 10-minute block, saved as JPEG in userData/shots and deleted after 30 days. - Idle: after 5 idle minutes show a dialog to keep, discard or reassign the idle time. - Weekly timesheet per client: total hours, amount (hours x rate), average activity percent and a screenshot grid. "Export" writes ~/Timesheets/<client>/<year>-W<week>.html as one self-contained file plus a PDF through `webContents.printToPDF`, and a CSV of the segments. - Invoice draft: from a timesheet, write an HTML invoice with a number taken from a counter in SQLite. No payment handling. - Manual time: add or edit a segment with a required reason; the report marks these as manual. - Cap alert: a notification when a project reaches 90 percent of its weekly cap. - Single user. No accounts, no telemetry, local-first; nothing leaves the machine. - Out of scope: teammates, approvals, payroll payments, integrations, phone apps. - README: the macOS Screen Recording and Accessibility prompts, running unsigned for personal use, where the data lives, and a reminder to tell clients that screenshots are taken.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Hubstaff.
Extend the time tracker in this folder. Requirements: - A schedule per client in settings: weekday, hour and recipient address. - At that time, build last week's timesheet HTML and PDF and send both through SMTP from .env, with a plain-text summary of hours and amount. - Keep a log of sent reports in SQLite and never send the same week twice. - A dry-run button writes the email to a file instead. - Update the README.
Add a Hubstaff importer to the time tracker in this folder. Requirements: - Read a timesheet or time-and-activity CSV exported from Hubstaff's Reports; map columns by header name and show a preview of the first 20 rows. - Create missing clients and projects, import segments with their activity percent and skip duplicates by start time and project. - Mark imported rows with source "hubstaff". - Print a summary of what was added and skipped. - Update the README.
Add per-project settings to the time tracker in this folder. Requirements: - Each project can turn screenshots off, blur them, or change the idle threshold. - Blurring applies before the file is saved (use `sharp`), and the timesheet shows a note for projects without screenshots. - Changing a setting affects only new blocks. - Update the README.
Agencies and remote teams pay for one place where tracked hours turn into timesheets, budgets and contractor payments. A solo freelancer mostly pays for the proof-of-work look a client accepts, which a self-made report only matches if the client trusts it.
Estimate · Everything runs on your machine; screenshots are the only growth. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Starter | $7 | $4.99 | Time tracking, timesheets, activity levels, clients and invoices, limited reports, limited payments, limited screenshots and limited app and URL tracking. |
| Grow | $9 | $7.50 | Adds full reports, one integration, idle timeout, project budgets, work breaks and expenses. |
| Team | $12 | $10 | Adds unlimited screenshots and app and URL tracking, automatic idle discard, teams, scheduling, payments and payroll, and unlimited integrations. |
| Enterprise | $25 | $25 | Adds higher public API limits, ACH bank-debit payment, HIPAA compliance, SOC 2 Type II and SCIM provisioning. |
No free plan: a 14-day trial needs no credit card, and a free Project Viewer role lets people read reports without tracking time.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: Teammates, schedules, project budgets and approvals in one workspace, Payments and payroll to contractors from tracked hours.
About $7 a month on the Starter plan per seat, $84 a year (checked 2026-10-20).
Teammates, schedules, project budgets and approvals in one workspace; Payments and payroll to contractors from tracked hours; Integrations with project tools and accounting; Location and job-site tracking add-ons, and the mobile apps; A vendor-run server with SOC 2 Type II and HIPAA options on Enterprise. If any of those matter to you, keep paying.
Yes: Cattr (free), Ever Gauzy (open source), solidtime (open source).