Huble
- role
- Full-stack engineer
- client
- Huble (DevnTech)
- stack
- Ruby on Rails, React, TypeScript, Sidekiq
- when
- A few months
- outcome
- Built the QuickBooks and Xero export in Huble's integrations layer, so tracked hours turn into an invoice without a CSV
- demo
- live
The product
Huble is a time tracking and project management tool for distributed teams: a desktop tracker for macOS, Windows and Linux with offline-first sync, timesheets with manager approvals, project budgets and margin reporting. It positions itself against screenshot-surveillance trackers, with the argument that monitoring tools get abandoned and the data becomes useless.
The problem
Huble turns tracked hours into project margin teams can defend in a client meeting, but getting from a timesheet to an actual invoice still meant exporting a CSV and reshaping it by hand for whatever billing tool the client used.
What I built
The QuickBooks and Xero connectors in Huble’s integrations layer: approved timesheets map to line items in the target billing tool automatically, so the export step goes away. Sync runs as a background job against each provider’s API, with per-account credentials and rate limits handled per integration rather than shared across all of them.
Decisions and tradeoffs
- Background sync (Sidekiq) rather than sync-on-approval in the request cycle, since a billing provider being slow or briefly down shouldn’t block someone approving a timesheet.
- Per-account provider credentials and their own rate-limit budget, so one account hitting QuickBooks’ API limit doesn’t degrade sync for anyone else on the platform.
Outcome
Approved time reaches QuickBooks or Xero without a CSV in between — one entry in the “100+ integrations” Huble’s homepage advertises.