I once integrated IFTTT with google sheets to automatically add a line to a spreadsheet when I entered and exited work. And then made some more pages in the sheet in order to have it all neat and orderly for timekeeping. A huge advantage was that I could correct small mistakes whenever I wanted, so it didn't matter much if the integration itself was a bit spotty.
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 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.
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!
What's your line of work if you need this kind of documentation? My time tracking has never been disputed this far, and I can't think of a situation where I would agree to record my work day for a client.
I have had the same experience as you with time tracking, but I admittedly think that his process is really good. It could be archived and in the event of any disputes, it would rapidly settle them.
But then again, I can’t imagine disputes like that. I wouldn’t work for anyone with red flags.
I understand where you're coming from. Archiving all that work history was pretty useful since so many projects involved repeating the same process but on new data. It was important to make sure that everything happened in the same order and the notes added to the screenshots as I worked or at the end of each day helped me avoid lost time and prevented repeating mistakes made the first time through.
I was reluctant to use any tracking software until I had to get paid the first time. Since I came on board during a flurry of activity I bounced between several projects every day for weeks. Each project had a different owner who had their own budget and project code. My handwritten notes and memory were a sorry rendering of the day's work compared to the one minute screenshots which could give me near exact start and stop times for time spent on each task. I could review handwritten notes and picture what I was doing and make an educated guess about how long I worked on some things but the software allowed me to nail down exactly how long I spent on each task and made it simple to invoice payment for all my time without guessing.
I am a consultant in a one-person company so I get to do all the work and all the background stuff too. This software made the drudgery bearable and efficient and allowed me to get paid for all the time I spent on someone else's projects (I billed to the minute since I could document to the minute).
There were no real red flags with the clients. Good people in a high-speed environment.
I didn’t mean to imply that your clients had red flags. What I meant is that the only reason I would want that level of precision is if I was covering my ass legally, and I wouldn’t want a contract where I needed that level of granularity.
It is better to charge by the day anyway. If you’re needed even an hour on a day, they get the daily rate. An interruption in your day for even an hour has context shifting and sucks away a lot more time than that implicitly. Alternatively, weekly prepaid hours work as well. As long as the client is getting value delivered and all their requirements are met or exceeded, and the time is spent to make sure that is always the case, contracting can be a vehicle to escape mundanities like exact timekeeping and enable better use of time.
I would also argue in general for prepaid hours, as this is much more palatable for a business anyway. It gives them a predictable budget with no guesswork, and you a predictable income. That stability is better for both parties as long as you’re delivering.
But everyone’s got their method of operating. Screenshotting a day like that is impressive legally but does make my skin crawl as a dev & creative. I like to just zone out and enter the universe of my work.
I agree with most of your points here. I added unnecessary complexity to the problem of tracking time and getting paid. I decided to bill for every documented minute. There was no requirement from the clients. Totally my decision.
Looking back, if I had to do it again I would bill a day rate and/or set a monthly minimum billable rate to compensate for the constant availability. The job did introduce lots of stress at times and interfered with a normal life. The only saving thing here is that I set my own rate, controlled my own hours to a large extent, and tried to capture payment for every bit of time spent working with them. I also had the opportunity to work with the latest generation hardware, debug the latest software to run it, and troubleshoot problems in real time when it was deployed and time critical to understand failure modes and quantify success. The job had its benefits outside of the money.
Geophysicist. I handled quite a few things for one client including 24-hour support to field operations, remote processing of data, real-time QC of data processed by others, briefing of client contacts about hardware and software capabilities, demonstrations of data processing situations, presentation of data in various slideshows or interactive formats. On any given day I could work on one project or a half-dozen.
I tracked my time so that I could accurately assign time to each of their projects. Since I worked with personnel from field ops, software development, hardware testing, and was a point of contact for their external clients I needed to bill the correct project. I was on call 24/7/365 to deal with personnel who were could be working anywhere on earth.
In addition to using this software for job-related tasks it is super useful for recording all the inputs when you fill out online order forms. I use junk mail accounts for things I only want to see or buy from once and it helps to have all the fields filled as I actually filled them for my records. Some things offer one rate for a short period and flip to a higher rate later with an option to cancel. I screenshot all the offer terms for my records so I can verify charges to my accounts and cancel things I don't care about.
I have done a lot of online cross-training in other things and having screenshots of relevant slide shows can help jog a memory.
As far as employers requiring this level of documentation it was recommended when I began working with one client that I use time-tracking software to manage invoicing and project billing. The person who made that recommendation was also a consultant who understood the nature of the work I would be doing. I was free to choose software, etc since I was a consultant and not an employee. I tested several offerings and settled on this one.
I was only asked once to provide documentation for time invoiced. I had invoiced more than 20 consecutive hours of time on one project, a lot longer than your standard 8-hour day. It was one of those things that began with a phone call and came standard with a tight deadline and multiple data format issues to sort before it could be completed. Using the one minute screenshots I assembled a gif of the time period subsampling to 5 minute screenshots, included copies of my hand-written notes from that part of the project, and printed all the notes added during and after the work period and submitted that along with an offer to produce similar documentation for any other entries for the time that I had contracted with their company. I made a follow-up call to the contact and was told that they didn't need to see anything else, ever.
Basically, for more than a decade I screenshotted my work life at one minute intervals and generated invoices from the screenshots and database entries. It was super easy and a huge time saver since it was all in one place and easy to generate reports.
It was without a doubt top 5 most useful software I have ever purchased.
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.
I also use org to clock my hours. The clocktable makes it even better to aggregate/report your hours. You can look at a 1-month block separated by week (I report my hours weekly) with the granularity you want. A very versatile tool!
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.
(I am not associated with Timing, just a happy user)
I tried a few time tracking apps, and none come close to Timing. It's easy to use, gets regular updates, it's easy to setup projects and define rules (such that you don't have to track by hand). Has a handy integration with calendar, you can directly book meetings.
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.
Is there a reason you need time tracking and invoice generation to be connected? In my case I need a monthly invoice that just needs the total hours worked for that month. It's always 8 hours times number of days worked.
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.)
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.
Yes, see ManicTime [0], Timing [1] and ActivityWatch [2] for that.
They passively record what you do, on computer and phone, and at the end of the day (or when invoicing is due) allow you to link what you did to projects.
Use ManicTime if you're mostly on Windows, Timing appears to be good if you're mostly on OS X, and ActivityWatch takes the same approach in an open-source cross-platform project.
I have ManicTime set to record a screenshot every 15 seconds, and record window title and document paths on every app switch. Invoicing still takes time, but knowing what you did and when helps to take all the guesswork out of it, especially for chaotic days.
I don't know if shameless plugs are allowed here (sorry if not!), but I have an open source project for Mac that's aimed at exactly this problem. Every ~10 minutes (configurable), it pops up an unobtrusive prompt to ask you what you're working on right now. It then has some basic reporting and aggregating functionality. It's not specifically targeted for consulting / invoicing (I made it because I often ended my day wondering what the heck I'd done all day), and it's sometimes a tad rough around the edges, but it could help. https://whatdid.yuvalshavit.com / https://github.com/yshavit/whatdid
(I'm newish to HN, so please let me know if this message is inappropriate!)
For my specific work flow I was actually thinking of scraping all my git repos to see my activity. Because I'm always working in a git repo, or mostly.
I actually already did try using some sort of recursive git status/log viewer that I can't remember the name of now. Didn't keep it up but I think a program that scrapes my git repos, and perhaps aggregates with other activity logs, would be the best fit.
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.
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.
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.
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.
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/
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.
As a huge bonus, if you started using or currently use TaskWarrior (console based task management), it integrates seamlessly and will track time spent on a task for you.
It's an awesome, open source, extremely robust, and well thought out little ecosystem.
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.
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.
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.
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.
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.
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.
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.
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"
I was a longtime user of TimeSnapper, but stopped tracking time entirely for a while. I've recently started with ManicTime and am very happy with the UI and features. It takes very little time to track, even when you don't auto-tag.
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.
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.
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
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.
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.
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.
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.
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 ;))
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.
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.
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
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?