HACKER Q&A
📣 thepra

What are good self hosted time tracking software for consultants?


Or is there a list of them somewhere?


  👤 nottorp Accepted Answer ✓
Any spreadsheet :)

The advantage being that you can always stick a random formula in for whatever you want to find out right now and you didnt need before.

It wont generate your invoices But Î find that a minor problem. How many customers do you invoice per month anyway?


👤 nazarewk
I'm very happy with https://klog.jotaen.net/ it has extremely simple text format editable from anywhere and a command converting those to JSON (sadly not the other way around).

I've written a Python script to ease my everyday (and monthly) interactions with it like excel report for my employer https://github.com/nazarewk-iac/nix-configs/blob/main/packag...


👤 doodlebugging
I used TimeSnapper for a long time. It screenshots your desktop at an interval that you define, allows you to markup with notes on the screenshots, builds your screenshots into a gif of your day, tracks active window, allows you to delete irrelevant screenshots, log database and screenshots can be password-protected, etc.

The developer was quick to reply to questions about the software and how to take advantage of all the options.

I don't know whether it was still supported but I found it incredibly useful after trying several others (2010). It is installed locally and you control it but the best thing about it (is/was) that you buy it once and use it forever. No subscription. Fuck SaaS.

I just checked and...

Check it out, it seems to be an ongoing business:

https://timesnapper.com/

Best of all, it is only $29.99. When I bought my version back in the day, the Pro version was $79.99. That was a bargain then considering all the useful features and value delivered to me as I ran my consulting work.

I used the screenshots and activity tracker to bill my clients to the minute. LOL. Near zero uncompensated time. Since I did so much remote work my billing started at the login prompt and ended at the logout prompt.

Props to the developers and maintainers of this excellent software!


👤 jolmg
org-mode in Emacs. On a headline representing a task or event, `C-c C-x C-i` to clock-in, `C-c C-x C-o` to clock-out. The agenda view includes what you've clocked in to during each day, and from it, `R` can give you a clock report for the timeframe that the agenda view is showing.

👤 _rutinerad
Back when I did hourly reporting I used http://timingapp.com/. It tracks what applications and windows are open and then you connect those to tasks/projects/etc later, which was a must for me since I always forgot both to do time reporting and what I had been working on.

👤 tedtms
I went back and forth between a couple of them -- Kimai2 and InvoiceNinja, back when Ninja was still on v4. Ultimately, every time tracking system does things a little differently, and after switching back and forth again, I've settled back on InvoiceNinja v5 (https://invoiceninja.com/).

If all you need is time tracking, Kimai2 and several others will do the job just fine. But I've found in my line of work that it's useful to be able to produce formal quotes and invoices for tracking purposes. Ninja lets you do all of that, no extensions or modules required, and all of the components are integrated with each other (quotes can be converted to invoices, projects, or both, invoicing can be done by task or by project, expenses can be included in invoices, etc.) and it also features a very nice automated emailing system for client invoice/quote notifications and even a guest frontend for them to log into.

So all in all, I've found InvoiceNinja to be extremely useful and can't recommend it enough.


👤 jamessb
> Or is there a list of them somewhere?

awesome-selfhosted lists 4 self-hosted systems: https://github.com/awesome-selfhosted/awesome-selfhosted#tim...

(ActivityWatch, Kimai, TimeTagger, Traggo)


👤 neilv
For a long time, I just tracked each invoice's hours in a file as s-expression data (today, it might be JSON), and it loaded a small script to generate an HTML invoice, intended for printing to PDF. This worked fine, including when I had to divide the hours between two contracts (just another line of code, figuratively), and when the info clients needed on the invoice changed, and when client now needed invoices to be physically signed by hand. (At one point, this evolving script became the first user of one of my HTML-related libraries: https://www.neilvandyke.org/racket/html-template/ )

Then I moved to GnuCash invoices, where each line item was rough notes on what I was working on that day, updated throughout the day. I modified one of the invoice-printing scripts to hide the notes, showing only hours and dollars for each day. Then GnuCash's normal accounts-receivable functionality. For periodic reports on what I'd done, I looked at the daily notes for a reminder of everything I did, and quickly summarized to higher-level paragraph, which got emailed. (GnuCash for invoicing alone wasn't worthwhile for my very simple needs that could've been handled with the standalone script, but the AR functionality was actually useful for reconciling payments and making sure no invoice was missed by client, and it also put this billable hours together in one place with my other financial transaction data, to give me an up-to-date picture of the whole thing.)

A tip that applies to whatever method you use: since a consulting invoice represents 4-5 figures of revenue for work already completed, this might be some of your most valuable data, and it's changing daily, so have good backups. I wasn't too confident in my data backups, so I always kept a printed invoice-in-progress on my printer. (My custom invoice formatting script detected from GnuCash data whether or not the invoice was in-progress, and marked it appropriately.)


👤 icedchai
I always use a text file, one per client: date, number of hours that day, and a description of what I did. I round up to the nearest quarter hour.

👤 INTPenis
I find that it doesn't matter which app you use because at the end of the day you need the discipline to update your time tracking when starting and ending your work time.

That's my biggest issue. I work in a chaotic way.


👤 skriptmonkey
I have used TimeTrap (https://github.com/samg/timetrap) for years. I have it installed on a dev/utility server I have hosted in the cloud. I use JuiceSSH on my android phone to run quick check in and check out scripts. While I'm at my workstation I have a terminal open that is SSHed into my VM. One of the panels in tmux is using a watch command to monitor my time. Purely just a time tracking function so I can't generate invoices or anything like that.

👤 pentacent_hq
I’ve been using Kimai [1] for a bit over a year to track my freelancing work for various clients as well as the work I do for my own projects. I can definitely recommend it!

It's easy to install and very pleasant to use for tracking time.

Entries have an "exported" flag to mark if you've already billed for a certain hour or not. You could also generate invoices directly from Kimai but I'm not using that feature because I'm creating my invoices in another program.

[1] https://www.kimai.org


👤 ra33o
Logseq does some basic time tracking and if used correctly, a second brain. https://logseq.com/

👤 johnbellone
If you're managing a small business I'd suggest looking at a more comprehensive set of tools. I have had success with Fresh Books[0]. It is simple, cheap, and has an easy to use mobile application. As far as I know, it doesn't have a desktop widget for tracking time, but there is a Chrome extension.

[0]: https://www.freshbooks.com/


👤 ghh
ManicTime [0] passively records your computer and phone activity in minute detail.

This makes it great for consultants, i.e. people working for multiple clients every day. You can focus on making your clients happy, and at the end of the day (or week, or month), still accurately assign time spent on each project.

ManicTime:

  - Takes a screenshot every X seconds,
  - Records window titles, document paths, urls,
  - Records phone call metadata, phone location, foreground phone app (Android only).
ManicTime has a very intuitive zoomable timeline interface to assign screenshots and other recorded activity to projects. Everything is stored offline. If you want, a free to use self-hosted server ManicTime server helps with backup and multi-device synchronisation.

ManicTime works best on Windows and with Android, although an OS X client exists.

Pricing: 67 USD for a one year license (so: no subscription that holds your data hostage). ManicTime is not free, but knowing what you did and when (down to the minute) gives it a quick ROI.

[0] https://www.manictime.com/


👤 timetrack
Check TimeTrack, it was made for freelancers 10 years ago, they had great success on app store (more then 1.000.000 downloads), then they created enterprise solution and they offer on-premise with individual SALs as well: https://www.timetrackapp.com/en/on-premise/

👤 jasonjayr
I've been using this for eons:

https://play.google.com/store/apps/details?id=com.dynamicg.t...

There's a feature limited free version. Lots of options to track times, jobs, breaks, options for how to deal with day roll over, etc. Unfortunatly Google forced them to break/disable the location tracking feature (despite that it was only doing using the information on-device) - which was super handy to 'clock in/clock out' when arriving at a site.. There's no server, but several backup options to some services or on-device storage.


👤 bruderstein
timewarrior.org

Not associated, but a big fan. Console based, so easily scriptable. Use it not for consulting but time tracking between projects.


👤 cwmoore
If you work in a terminal using git, why not track time in a terminal using git?

https://gitime.readthedocs.io/en/latest/


👤 loloquwowndueo
I like Watson https://github.com/TailorDev/Watson and it used to have a web backend (crick) but that seems to be abandoned.

👤 wolfhumble
I have been very happy with Daily Time Tracking, dailytimetracking.com (Mac)

What is great about is that it just polls you every n minutes (based on your preferences), and then you just: Press the 'V' button (if you are working on the same as before – our Shift+Ctrl+S) OR Write in the new task that you are working on OR Select an earlier task from a dropdown menu. Time is then automatically added to the task chosen. Then you can just see the total of time spent on each task or export the data to CSV, JSON etc.

Not affiliated in any way, but has been working great for me.


👤 philip1209
It's not self-hosted, but I just use Stripe's invoicing product directly. I keep a draft invoice open where I record time + tasks daily. If you have a Stripe account already, consider this.

👤 psibi
For the last couple of years, I have been using a combination of Clocking commands [0] in Emacs along with org-journal. It has been working well enough for me. Although, I had to send some patches to org-journal initially to suit my workflow.

[0] https://orgmode.org/manual/Clocking-commands.html

[1] https://github.com/bastibe/org-journal


👤 ushercakes
I recommend Bonsai, not just as a time tracker, but as a full fledged suite for freelancing.

In this thread, I'm seeing a lot of cheaper/discount alternatives, but an imperative piece of timesheets is trust. When you send the timesheet to the client, they should trust the results, and IMO the bigger brands are just better at providing that level of trust.

In comparison to quickbooks and the other huge names, Bonsai is super cheap, lightweight, and pretty much easier to use. Could not recommend it enough.


👤 bram2w
Some of our users are using Baserow for time tracking. It can be self-hosted, and you can create a data structure that fits your needs. You can for example create a projects table containing all the projects you're working on. Then create a time table with a relationship to the projects, a numeric "hours spend" field and a description field. Every time you worked on a project, you just add a time entry. You can also share worked hours with your clients.

👤 quantaseed
I use aTimeLogger app to track my time then I email myself a CSV report from the app and use Google Sheets to create the invoice using a couple simple formulas and an invoice template I made.

I paste the data from the email into a new copy of the invoice template and it mostly does everything I need. Then I download it as a PDF and send it.

I invoice two to four companies per month. Takes me less than 1/2 hour usually.

But I came here to find out if there was a nice self-hosted alternative.


👤 philipps1982
I wrote a small ruby cli tool, which I use since over 5 years for all my freelance and consulting jobs:

https://github.com/pstaender/punched

To let it sync with other computers I let it store the files in nextcoloud (they are only plain text files). There is just basic functionality, but you can also set different hour rates per project and let it show the total sum of hours for a project.


👤 jabroni_salad
I've been using manictime for awhile. You can host a server if you need to, but for solo use it works standalone just fine.

At the end of the day I have a candybar of time with titles of open window titles. Over the years I have added a lot of auto-tag rules and I just need to fill in a few gaps. It can do screenshots but I have that turned off since the window titles are sufficient for me.

The time I spent writing this will be tagged as "admin - not productive"


👤 lagrange77
I'm using Klokki, a freemium native OSX app. Very happy with it.

https://www.klokki.com/


👤 animal_spirits
I've used activity watch and like it: https://github.com/ActivityWatch

👤 nikslor
We run a consulting business and created the following tool which may be useful: https://github.com/adfinis/timed-backend https://github.com/adfinis/timed-frontend

👤 celroid
Timetagger. It's the only one that got time tracking right for me. The others I've tried require filling tedious forms and are bloated with other unnecessary features like invoice generation. It also has a resume button for stopped tasks which is a godsent.

👤 namrog84
I've been a huge fan of https://clockify.me/ for general time keeping of tasks. Mostly for personal reference and motiviation. I'm not a consultant but use it to track things from my various software side projects and even chores.

👤 andrey_utkin
I plan and retrospectively tweak items in visual calendar apps and augment/analyse them structurally using my own tooling, see https://github.com/andrey-utkin/taskdb/wiki/Live-demo

👤 dieselgate
Not a fanatic about it and only posting because I didn't see it mentioned but Asana and Harvest time have a free integration and it's sufficient for my single person general contractor business. i like the suggestions more about git/terminal/emacs etc so happy to read this thread

👤 Havoc
Have you had a look at the various ones discussed in the selfhosted sub

https://old.reddit.com/r/selfhosted/search?q=time+tracking&r...


👤 deweller
I have self-hosted https://www.invoiceninja.org/ (PHP backend) for years. It is overkill if all you want is time tracking. But it is a good self-hosted solution for project-based time tracking and invoicing.

👤 rebolyte
I’ve used Fanurio[0] in the past and it works well. It won’t win any design awards, but it’s cross-platform (Java) and covers all the features without a subscription.

[0]: http://www.fanuriotimetracking.com/


👤 matheusd
My own nonota: https://github.com/matheusd/nonota

CLI TUI, just a list of tasks, track time across them or manually add the time. Backing is a yaml file, so you can adjust if needed.

Runs anywhere you can use Go to compile to.


👤 User23
I use Emacs org-mode for planning and logging my work. I’m a full time remote employee and not a contractor, but the desire for another party to know what I’ve been up to from more than just commit messages appears the same to me. There’s even a clock that’s smart about tasks.

👤 pabe
Odoo Timesheets: https://www.odoo.com/en_US/app/timesheet-features

Track time on different tasks, invoice later on.

Edit: Mobile App online available with paid subscription.


👤 anotherevan
Long time ago I used a little windows program called TraxTime by SpudCity Software. Both seem to have passed into antiquity, but I really liked the punch-clock model it used. It was also really easy to go back and edit your in/out times when needed.

👤 t312227
idk ... multiple possibilites come to my mind:

* spreadsheet

if you are able to add (small) numbers all by yourself

* pen & paper

* a text-file

and some ideas - i never used this, but i think it has to be simple

* CSV

* JSON

with a small script to calculate the SUMs/generate the result - eg. awk, perl, python, javascript, php ... whatever floats your boat scriptlanguage-wise ;))

or - lets start some rants ;)

* XML

with an XSLT-transformation ;))

just my 0.02€


👤 motleydev
Funny enough, I've been considering a mini content series on modelling one in Postgres and then using different low-code tools for cross-platform engagement. Would this be of any interest? I guess this is the right group to ask.

👤 jgaa
I wrote whid for my personal needs, and have used it for more than 20 years ;)

https://github.com/jgaa/whid


👤 neap24
Spreadsheet for time tracking, simple Python script to generate an invoice.

👤 jer0me
I use Tim on Mac. It’s native, very simple, and looks to be free now, it used to be a few bucks.

https://tim.neat.software/


👤 kwhitefoot
Emacs Org mode timestamps.


👤 donutshop

👤 ensemblehq
I’ve mostly just been using spreadsheets and building formulas/macros to calculate revenue, etc. It works and doesn’t have tons of features most apps do.

👤 h4kor
Not self-hosted but running locally, I use https://github.com/projecthamster

👤 monotux
ledger has a time tracking mode which is pretty neat. I've used it for a while and liked it, https://www.ledger-cli.org/3.0/doc/ledger3.html#Time-Keeping

Otherwise Emacs and org-mode is handy as well, if you are an Emacs user.


👤 Marrand
I am selfhosting TimeTagger on a Hetzner vps with backups to a hetzner storage box. No issues so far and TimeTagger is great.

👤 sandreas
How about invoiceninja?

https://www.invoiceninja.org/


👤 petecooper

👤 markusw
No joke: I use a local SQLite db with three tables (clients, projects, work). Accessed with a GUI client. Works great!

👤 mudsmith
despite looking a bit like a 2012 web app, this has been rock solid for me for the past 5+ years, and is still under active development: https://www.anuko.com/time-tracker/index.htm

👤 schaefer
If you like the command line, there’s time warrior. (timew)

👤 arachno1999
I‘m using Tyme 3 and am totally happy with it.

👤 liketochill
I use Redmine