DEV Community

X-ray Tango
X-ray Tango

Posted on

I Got Tired of Timesheets, So I Built My Own Tool

Every Friday, I used to lose time trying to remember what I actually worked on. My employer’s ERP made timesheets feel like unpaid homework — slow forms, clunky UX, way too many clicks.

Funny enough, back when I freelanced part-time, pen and paper was faster than the ERP. Just jot down:

09:00 Project A  
10:30 Meeting  
11:00 Project B  
Enter fullscreen mode Exit fullscreen mode

Simple. But as a full-time consultant, the list at the end of the week got long. Translating that back into the ERP became painful again. That’s when I thought: I should automate this.


What I Wanted

  1. Recording should be instant. The system should capture start times automatically, then calculate the time spent.
  2. Reporting should be painless. Group entries by task, push them to the ERP via API, and never open the ERP’s UX again.

I considered Excel, but it wouldn’t give me real automation. I checked a few existing tools, but they felt bloated and didn’t match my pen-and-paper logic:

  • End a task by simply starting the next one.
  • Automatically calculate the duration of the previous task.

So I built a web app.


Version 1: Already a Boost

  • Add entries with one button or a keyboard shortcut.
  • Date/time auto-populates.
  • Previous task’s duration auto-calculated.
  • Select multiple entries → see the total minutes right away.

I’d just take that total and type it into the ERP. Productivity win.

The stack remained super simple: no backend needed.

  • Frontend deployed to Cloudflare Pages
  • Data stored in browser localStorage
  • No signup, no emails, no accounts. Just open the page and log.

Integrating with the ERP

Of course, I wanted more. My employer used Odoo, and I wanted to push timesheets directly to it at the end of each day, with one button click. That meant:

  • Pulling projects and tasks from Odoo via API
  • Linking entries in my app
  • Pushing them back to Odoo in bulk at the end of the day, with rounding options for time spent (minimum 15 minutes)

Then came the classic: CORS issues.
Frontend → Odoo backend? Nope.
I tried using a Chrome extension and it worked, it was just not that practical.
The fix: Cloudflare Workers. They handled the proxy neatly, and suddenly I had a working integration.


Current Tech Stack (for the curious)

  • Frontend: StencilJS (web components)
  • Hosting: Cloudflare Pages
  • Storage: Browser LocalStorage
  • ERP Integration: Odoo API (Projects & Tasks)
  • Proxy / CORS Fix: Cloudflare Workers

Lightweight, serverless, and cheap to run.


Small UX Wins

Over time, I kept scratching little itches:

  • Added a “Break” button (instead of typing it every time) → logs as non-working time.
  • Polished the design, made it responsive.
  • Shortcuts for common actions.

Here's a quick screenshot:

I didn’t think mobile mattered at first, but once or twice I wanted to check/edit during my commute. Since the data lives in local storage, it wasn’t super useful. Maybe syncing across devices will come later... That would require a backend, a database, authentication etc.


What’s Next

  • Teamwork integration (since that’s what I use now).
  • Maybe calendar pre-fills to auto-generate some entries.
  • CSV / Excel exports.
  • Integrate with Zapier/Make hooks.
  • Sync across devices if users ask for it.
  • And why not at some point have an LLM improve the description of timesheets? 😅

But the core will stay: simple, fast, no sign-up, no data harvesting.


Wanna Try?

If you’re a freelancer, consultant, or developer who hates timesheets, maybe my app can help:
👉 timesheetr.app

I’d love to hear feedback — especially from devs who know the pain and want to make this faster.

Top comments (0)