ClockLab: Automating Processes
A team without automation isn’t slow — it’s just busy with the wrong things.
- Automation
- Laravel & TALL stack
- Software Architecture
Before starting work on the Lease A Bike platform, it was defined that we needed a Git/project management tool that could run off-cloud and provide fully transparent time tracking. That's why we chose GitLab for code and project management, as well as Clockify for time tracking. In theory, it seemed like a great solution — until two major problems arose:
At the time, there was no easy way to sync estimated and tracked time between the tools. A manual sync meant hours of unpaid work each week.
Not everyone in GitLab should see detailed Clockify data — and not everyone in Clockify needed a full GitLab license just to log time.
Especially with GitLab Bronze, even basic read-only access came at a cost — and required an annual subscription. We needed a cheaper and more flexible solution.
The dashboard where you could see your stats.
I decided to develop a connector between Clockify and GitLab — and named it, naturally, ClockLab! The microservice pushed time entries from Clockify into GitLab issues, while in the background it compared actual effort against original estimates and kept everything in sync. This connection saved us nerve-wracking hours every day.
However, there was one catch: What if someone missed a time entry or added it to the wrong issue? We often noticed billing errors in the monthly invoice, but after a few days — let alone a few weeks — the details were no longer fresh in people's minds.
To tackle this, I extended ClockLab with real-time messages via Slack. If a time entry seemed off or suspicious, the team member received an immediate notification. Simple. Effective. Incredibly useful.
From Microservice to Swiss Army Knife
ClockLab started as a lean solution, but due to its enormous value, I began automating all the other tasks that were a pain. Over time, I added features that we had been doing manually for far too long:
Slack integration to notify teams when issues exceeded estimates or time entries didn't match the issue description.
Daily Check-Ins via Slack instead of real team meetings, where team members were asked about their plans for the day and potential blockers.
Priority-based issue sorting in GitLab to keep the backlog clean and focused based on specific tags and progress.
Merge Request validation to prevent changes with leftover debugging code.
Automatic invoicing via LexOffice to streamline billing.
A help desk for externals to report bugs or request features.
Advanced QA with predefined test cases and Loom video recording.
…and other enhancements that made life just a little easier.
Meet Marvin
What began as a simple workaround quickly became indispensable. And we needed a name for our agent, something personal. We chose Marvin, inspired by The Hitchhiker’s Guide to the Galaxy. A quiet background worker, Marvin not only took care of all the tedious tasks no one wanted to deal with but also led our daily check-ins and stand-ups.
Marvin quickly became an essential part of the team, saving us countless hours of work each day — which we never charged our clients for. We just didn't want to go insane doing the same frustrating things repeatedly. The more annoying the tasks and the more often you do them, the more likely errors creep in.
Interaction on a GitLab issue.
GitLab and I never really clicked. I used it because I had to, but found both the software and the business model terrible. So in my own projects, I switched to GitHub. Since I didn't want to give up Marvin, I added GitHub support to ClockLab. At ENIQO, I integrated Toggl as an alternative to Clockify for time tracking, since their team had relied on it for years. And so it was inevitable: over time, the software became increasingly complex. ClockLab had become huge.
The Turning Point
ClockLab began as a Laravel project, featuring numerous queues and direct integrations. While I would have loved to open-source it, my early decision to build it on Laravel Nova put a stop to that. While I still rely on ClockLab daily for time tracking and invoicing, data is no longer synced.
Honestly, the biggest challenge with ClockLab today is the enormous codebase: it has grown too large to maintain effectively. At the same time, recent advances in automation and AI offer much simpler ways to orchestrate data. That's why ClockLab is only maintained sporadically: "Never change a running system."
For all new automations—and I automate a lot—I now utilize n8n. This allows me to easily create a more modular structure and streamline processes even further.
Marvin is Everywhere
As mentioned, Marvin continues to be a vital part of my daily routine. Although I no longer sync across tools, I depend on ClockLab for time tracking and invoicing. Automating tasks I don't enjoy doing manually was one of the best decisions I ever made. Honestly, I still appreciate getting messages from Marvin when something isn't right — because even messages sent via n8n are sent in Marvin's name.
Interested in automation and AI for your projects? I've got endless ideas! 🚀