Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Timestrap – Self-hosted online time tracking (github.com/overshard)
264 points by overshard on April 23, 2017 | hide | past | favorite | 75 comments

Hello HN, developer here. I started this Friday night because I wanted something much simpler than all the options I was given and something that I could host myself. There is a lot to do on this project still and I wanted to see what the reception was for the start.

Timestrap currently does fully support time tracking and CSV exports for multiple projects and tasks. It has a full REST API and admin panel. Invoicing will come after I get the dashboard more fleshed out, more export options and better security.

I don't know if I speak for other users, but rather than focusing on invoicing, why not tie into Quickbooks? Or similar services. i.e. There's already invoicing software. If the integration between the timesheets is the only differentiator, why rewrite the invoicing part?

This app fits a use case I had a few years ago. I was travelling and doing odd jobs (WordPress tweaks and the like) and needed something I could use to track time and generate an invoice.

QuickBooks & Xero et al were waaay more than I needed or wanted to pay for.

I ended up using the free tier of Toggl, doing a CSV export and generating a butt-ugly invoice from Excel.

If this tool were available, I'd have used it.

What you're describing is the exact point of this project!

I've been doing exactly what you described but using a separate service to generate and track invoices (Cushion).

Invoicing in Bonsai is also free and pretty nice, especially if using other parts of their service.

I'm also currently exploring the invoice integration in Wave.

Both of these are free.

If you're interested, I built www.minute7.com which is a time (and expense) tracker that does integrate directly with Intuit's QuickBooks (we're even near the top of their app store listing on apps.intuit.com as the only major player without major funding and a huge sales team :)

Agree I don't need invoicing, already use Simple Invocies (https://simpleinvoices.io) which integrates with Stripe.

Focus on the time tracking, reporting, etc.

I do plan on supporting things like Quickbooks via the export system and creating an actual workflow around that past just an "export" button and then "import".

For my own use case I would like to have one location to enter time then select a range, hit "invoice" and be able to send that to a client with a very simple credit card payment system.

Shameless plug time.

I'm a Front End Web Developer at a startup offering a time tracking app with QuickBooks integration. QuickBooks is a premium feature, but we have a 30 day free trial so you can give it a spin.

Our focus is on construction companies, who love our offline support, but it works great for time keeping for anyone and everyone here dogfoods the app every day.

We recently had a big investment come in from CAT: http://www.caterpillar.com/en/company/innovation/caterpillar...

Check us out at https://busybusy.com

Available for Android, iOS and Web

Welcome to the niche, I've only been here for a year and I've been amazed at just how deep and complex a time tracking application really is.

Because Quickbooks is paid? I'd prefer not to have to pay a big amount of money when I can get a simple invoice system for free.

Also, I didn't find where to generate an invoice.



Friday night start, Monday morning internet fame.

Magic happens, programming skills give superpowers.

Hey, I've just deployed it to my little self-hosted stack, I look forward to taking it for a spin this week.

Initial thoughts are that it's easy to deploy, but you need to be more explicit in the doc about what people need to do to create the admin account. People who aren't at least passingly familiar with django will get lost at this step.

The minimalism is great, and the UX seems pretty smooth. I intuitively expected a timesheet selection dropdown on the home and entries pages, but once I made a timesheet and added some tasks to it, I could see why those dropdowns weren't actually needed.

It'd be nice to package all the js files and have the option to serve them from my server, rather than hotload them from the internet every time. It's both more private and kinder on the hosters.

I'm adding additional documentation for creating an initial user now!

I agree with the packaging all JS files comment, for a truly self-hosted solution one should have this option and I plan on doing this for 1.0. Since we use django-compressor it will compress everything down to a single JS file too. Right now for the alpha phase I'm rapidly adding and removing JS libraries so I didn't want to bother with this.

That makes total sense, I look forward to 1.0!

Just wanted to say that for a project started on Friday, (or really any project), the readme is really well done!

I work with a lot of time tracking data in my job (calculating the R&D tax credit). I like this tool a lot. It's simple, responsive, fast, and covers nearly all the relevant data points without any obfuscating clutter.

There are a couple items we look for that might be worth including in the CSV exports, depending on what kind of scale you want to plan for. Specifically:

  1. Project name,
  2. Project ID or number, 
  3. Employee name, 
  4. Employee ID or number, 
  5. Employee email, 
  6. Supervisor name, 
  7. Supervisor employee ID or number, 
  8. Supervisor email, 
  9. Task or activity code, and 
  10. Task or activity description. 
It's important for us to be able to line up time tracking data to W2 data from a payroll system, which is frequently hosted separately with different data standards. So employee numbers (not SSNs obviously) really help when dealing with larger companies where a significant number of employee names may change (e.g. due to marriage) or may be formatted with slight variations (e.g. nicknames instead of full legal), or where the odds of a name collision are high. We also like to see departments, cost centers, legal entities, locations, lines of business, etc. where applicable, but we can usually layer those on from other data sources if we can join on a unique identifier, whether it's at the project, task, or employee level.

If I can get that data in a single CSV export for all employees at a company, I'm like 70% done with the calculation.

And while this sounds like an odd use case, pretty much any profitable company doing software development in the US should be claiming the credit (and actually in pretty much any developed country, because most have a credit that was modeled on the US's). Even smaller shops with only a handful of employees usually see substantial benefit. Having the data formatted like this up front reduces the costs of doing an R&D credit study and dramatically reduces the odds of an adverse adjustment in exam or audit. Especially when the employees have been diligent about recording their time and the associated activity/project/task data. It's also worth noting that this is one area of the tax code that does not seem likely to be affected by tax reform as both the Ryan and Trump plans propose to leave the credit as it is.

Edit: oh and I forgot because this doesn't relate to my work, but having an option for charge codes is nice. So something like [client ID].[project ID]. It will improve interoperability with third-party invoicing tools.

I'll definitely keep this in mind while improving the export part of Timestrap. All of this would be easy to add via a couple extra fields on the admin panel.

Is this backed by Timetrap? I couldn't tell from the readme but hope it is.

> I started this Friday night Great speed. Congrats on shipping

This is super nice and much simpler than all of the other software I've been using to cobble together work logging + time tracking + invoicing this past year. After trying Toggl, Harvest, and everything else I totally understand why you built it.

The only changes I'd like to see are: allowing one to log the time work is started (not just the date), a confirmation before deleting data that can't be recovered, and a way to filter the hours charts by day / week / date range.

The time work is started is something I'm debating with myself on. I think I will add start + end date + time since it would help with making a timer persistent across pages/connection issues.

Confirmation is a must, mistakes happen!

Filters/reporting is coming over the next week, also a must, what's the point of time tracking if you can't compile reports of your time.

+1 for start/stop times because that's how I keep my data now. I have been looking for a simple solution like this for quite some time. Also: thank you OP

Sounds great — this is off to an amazing start.

Not sure if you intend to turn it into a business but with a little polish and the features you described it's simpler / better than several competing paid products on the market today (as you probably noticed).

Having start and end dates I find is much more easy to add in.

But they all need to be part of the same task for one day.

If I've forgotten to start a timer, it's easy for me to look at my browsing history and make a good guess when I started / finished.

Figuring out duration when you stop and start on a task multiple times becomes a pain.

Are there people interested in following the development of this app? What's the best way to "watch" a project like this come together?

I see some great suggestions in the comments, I thought the idea of automating the screenshots that go into the documentation was kind of interesting. The idea that it's cost effective to automate something like that, and further the idea that if the UI changed the documentation would, in a way, automatically update...

I always think when I first see these types of Shows, I'd really live to see an animated gif walkthrough. Ideally, buttons beneath the walkthrough that are labeled '30 seconds', '3 minutes', '15 minutes'. Or some variation on this theme. Does anyone do product demos this way?

A 30-second product demo video would definitely be a nice to have.

This looks nice! I fail to see any use for the dashboard, though - especially as you can't drill down into the timesheets from the pretty graphs.

I think the quickest, most prominent action should be to start tracking a task - or change which task is currently tracked.

I agree the dashboard is pretty worthless, I made it because I wanted to fiddle around with some Charts. The best thing would be what you're saying is tracking tasks.

if anyone wants a nice CLI tool then Timetrap is pretty awesome, been using it for years.


Yup, that's what I've been running. Really like it, especially after I made a very simple little "on off" widget to display on my tmux status line. No more forgetting I have a timer running :)

Ah, what I really miss about time tracking software isn't necessarily something where I manually type in what I've been working on, as much as it's something like a self-hosted RescueTime[0].

Instead of manually adding things to it, it allows you to mark certain applications and websites as you doing something productive (for example, if you're running Atom and visiting StackOverflow and GitHub, you're probably doing something productive) and then tracks that via its clients and shows you a nice overview of how much of your time is actually spent on doing something productive.

Now, of course, the fact that RescueTime is centralized and hasn't released the source code of its clients makes me instantly dismiss it as a software I would use, but I would love to find a certain self-hosted solution that does pretty much exactly what RescueTime does.

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

If you're on the Mac, Timing might be similar to what you're looking for (one of their selling points is that your data is stored locally and never leaves your Mac):


And on Windows, Mac & Linux, it looks like ManicTime will also store data locally if you don't use the Server component:


Ah, I'm on Ubuntu, and ManicTime would be an awesome choice, but their Ubuntu version is for tracking only, and requires a server to actually view the reports[0].

Seems like the same thing applies for macOS, so I would call it Windows-only solution in the serverless mode. Alternatively, you could run the server[1] on some always-on Windows machine, pay for the license(s) and use the server under your control to store the data.

[0] http://www.manictime.com/linux

[1] http://www.manictime.com/teams/download

Hi, Daniel, developer of Timing here. Thanks for the mention! FYI, we will be releasing a new version soon, with a completely revamped interface, productivity tracking, easier task creation, better reports, and more. You can check it out at https://2.timingapp.com

Qbserve (our app) is an "offline" RescueTime alternative for Mac: https://qotoqot.com/qbserve/

It automatically tracks productivity for sites, apps, and even Slack teams, showing your productivity score in real time in the menu bar.

We are also working right now on an update that will add automatic project tracking and invoice generation.

Would it really hurt to include a screenshot of what it's like to use? Sorry for the grouchy comment but we're all busy people, there has to be a modicum of convincing on a programmers part to encourage us to divert us attention to their project.

Some screenshots would be useful but I'm still rapidly developing Timestrap and the interface is getting stuff added to it every few hours so I feel like it'd be a wasted effort on my part right now.

EDIT: Added some screenshots to the bottom of the readme

Automate it! Set up a browser test that screencaps the important pages for the documentation (and checks them for basic errors like 500 status or no text).

In the long run you can diff the images and assert that they haven't changed more than N% from the reference, but for now, it makes evergreen documentation.

http://trinityradar.com/ can do this.

Full disclosure: I work on this project.

Good idea, I've already automated most everything else for testing and pushing to Heroku. I may as well!

Nightmare is great for this: https://github.com/segmentio/nightmare

You could show off mock-ups you've done in Photoshop (and perhaps add a disclaimer) if you don't have a stable UI right now!

I don't have any mock-ups. I'm literally just creating the UI as I go since I just started making this on Friday and wanted to get something working.

"I've setup an instance on Heroku of Timestrap that resets every 10 minutes if you want to play with it."

I mean, did you expect better from a user named 'drcross'? Also, if you took the time to click through the link you quote yourself, you would see the following, mostly useless message: "If you don't have a user yet create one via the CLI. If you need more users add them via the admin panel."

The next line after what I quoted: "The username and password are set to the same as the Quickstart ones." (admin/changeme123)

Full functioning demo seems more than sufficient.

Yeah but a video is always nice on mobile where some of the functionality is a little rough around the edges right now.

Agreed. That should be the bare minimum to show something like this off.

We also tried to create a super simple time tracking app. We will give it for free (also biz version) very soon.


Moving between days seems to be broken; I moved from April 23rd to 22nd and then tried to go back to the 23rd and didn't work. I couldn't advance beyond that either.

Despite this; great idea and looks beautiful. Seems to fill a bit of a void among task trackers I've used.

When I was freelancing, I have looked at many services for online time tracking. As an Emacs user, I finally settled for org-mode:

- http://orgmode.org/manual/Clocking-commands.html

- http://orgmode.org/manual/The-clock-table.html

I have a DevOps consulting company (shameless plug https://elasticbyte.net) and been on the lookout for a time tracking solution. I've been using AirTable and just adding in hours manually into a table, but it has really been limiting.

How is the reporting in Timestrap? Can a run a query like give me the sum of hours for client Acme Inc from March 23rd to April 23rd?

It has the ability to do this at the API level but not on the interface yet. All the reporting functionality is coming over the course of the next week since that's pretty critical to time tracking.

Right on. You going to charge (hosted solution)? I'd like to support you.

I don't really have any interest in making money on this project and I feel like a hosted solution defeats the purpose. The best support you could give is writing some issues on GitHub, testing things, helping with documentation, or submitting some features.

Paid feature requests. If the user (like the GP) wants a certain feature and don't want to implement it himself, accepting his offer to pay would benefit both parties.

Will do. You should think about charging, it is a forcing function and prevents you from working on the wrong features (developer creep)

Thanks for sharing! I've used Kimai [https://github.com/kimai/kimai] for a while, which offers similar functionality. Timestrap is MUCH nicer to look at, though the feature I use the most on Kimai isn't as well-implemented: the big stopwatch that adds entries quickly.

Kimai does handle the stop watch functionality much better than I do right now. This is a huge feature for me personally so I do plan on making it much better.

Kinda off-topic, but the screenshots were (probably) made on Windows 10 while you write that Ubuntu is your primary OS. Do you use Windows for work/coding and Ubuntu for other stuff? Because I do it more or less the other way around.

I'm using a variety of operating systems at the moment. My primary OS is Ubuntu, I happen to be on my home desktop which is used for gaming at the time of these screenshots. (Ubuntu gaming is still mediocre.) I use OS X at my office quite a bit but my primary laptop that I use at home and work is 100% Ubuntu.

I'm fairly OS agnostic and sync all my systems very well and use whatever I'm sitting at.

Huge thanks from me, I been looking to develop something to keep track of my own development hours for invoicing purposes. From early look it seems like you nailed it. Thanks!

Looks really great! Would love to see a cloudron package for it. Not sure how hard this would be as there doesn't seem to be a dockerfile in the repo.

This is great, I've been looking for something just like it. Once invoicing is included I think I'll try using it, I'll donate as well.

Awesome! Now all you need is to import from WakaTime to automatically fill the Tasks/Entries for me.

Awesome, exactly what I was looking for for a long time. I'll see if I can contribute something.

Thanks for sharing. Loving it.


Server error 500. Well too bad then.

It resets every 10 minutes or so, it's bound to break with HN hitting it and doing whatever they want to it.

What service is running the test instance?

It is so slow that I first thought the app was broken, but after 8 seconds TimeToFirstByte after clicking "Add" in the "Tasks" window, my entry finally appeared.

It's Heroku with HN accessing a single "Free Tier" instance. If you install it locally or on your own server it is very fast.

It's running on Heroku.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact