Home Forums 3rd Party Integration What third party systems should Klok integrate with?

  • This topic is empty.
Viewing 15 posts - 1 through 15 (of 17 total)
  • Author
  • #736

    I am currently putting the finishing touches on the API required to synchronize with 3rd party or homegrown time tracking systems. An example of such is FreshBooks. If you track clients and projects with FreshBooks, everyone in your organization can use Klok to keep track of their time whether they have an internet connection or not at the time.

    What other systems would you like to see integrated like this?


    It would be great if we could query the database directly. I”m a programmer myself and I’d love to make a utility to post my time to Microsoft Great Plains. If you did release a data access API or posted information about the format of the database, I’d be happy to submit my Great Plains tool (once I get it working)


    One of the changes that is currently being made (as part of v2.0) is to store the data in a local SQLite database instead of the current binary format. I don’t know what language you will be using, but if there is a way to read from SQLite then you should be able to pull the data out of the database and do what you want with it. If you want to share what you have done at that point, I would happily publicize that on the Klok site.


    Postiing here, as rob at mcgraphix dot com doesn’t give any answer.

    SQLite option is not very interesting for us as it would require us to develop additional code to run on the client machine (as opposed to developing some code that runs on the server) and that would mean:

    • additional code we need to maintain on client machines
    • an extra step for users, to find that custom application and use that for synchronizing

    Instead we would like to “synchronize” straight to server directly from Klok:

    • load project list from server (synchronize)
    • save time entries to server (synchronize)

    By “synchronize” I mean the ability to work offline and when coming online, push some button to load all hours to server. Or, even more convenient, have two modes:

    • offline mode – all data is saved in local (SQLite) database and synchronization is manual (push of a button)
    • online mode – all data is save to local and remote database. No manual synchronization is necessary. If connection fails, should switch to offline mode automatically.

    When loading hours to server, I agree with previous poster – a Klok-specific REST-like API would be nice and I guess the easiest to implement for you.
    Some more comments on that:

    • the previous poster seemed to suggest that the REST API should be very “real-time”, reporting every event to server (start tracking, stop tracking, etc). IMO, this is overkill – much better would be to synchronize only complete time intervals to server (“synchronize”). This would allow to use Klok also in offline mode and would reduce coupling between Klock implementation details and server-side code. All server communication should be in UTF-8 (or UTF-16, but not some ASCII or Latin1 encoding).
    • In order to keep synchronization status consistent, Klock client should keep track of some sort of time interval primary key (generated by server) – so the server understands which time interval should be added or updated (or deleted).
    • There should be possibility to “refresh” particular time interval from server (e.g. current day) – so it is clear what has been synchronized to server and what has not been synchronized to server.
      As to the data that should be synchronized, we would like:

      • read projects from server (only server-loaded projects can be synchronized back to server). No create/update/delete is needed for projects – this will be managed with server-side tools.
      • non-server-side projects can be allowed also, but then it should be easy to move/copy all recorded time intervals from “local” project to server-side project inside Klok UI. Use case: I’m offline and want to start recording hours for some new client project. Then I come online, create that client project on server-side and want to easily load (offline) recorded hours to that new server-side project.
      • create/read/update/delete time intervals, assigned to (server-side) projects.

    If this kind of functionality is developed, our company would potentally be interested in quite many licenses (~80 employees * 20 USD = ~1600 USD).
    If we would get a discount on the license, we could even help you to develop this ekstra functionality, if you are short on developers.


    I don’t need a klok api, but I would like to see a connector for VersionOne’s api[1]…

    something that pulls down (GET) my tasks, so all I need to do is sit down and click “working on” for whatever I’m working on, and then forget about it. Then, periodically POST that time data back into the appropriate places in V1.

    Further, it would be nifty if connectors were architected to be pluggable/modular… allow contributions from users so the community of users can take action & scratch their own itch, if so desired. Maybe I will build the V1 connector, for example, or maybe somebody from VersionOne will ;)

    [1] http://community.versionone.com/sdk/Documentation/DataAPI.aspx


    matt j. sorenson (emjayess)


    Sorry for the delay in responding. I have been enjoying a (well-deserved IMHO) vacation for the last half of Dec.

    Thanks for all the input. This is exactly the kind of discussion I want to have. Here is the plan as of right now. Suggestions are welcome.

    Klok will store all project/task (name, description, hours estimate, contact info, etc.) and time entries (date, start time, end time, comments, task, etc.) in a local SQLite database so that you can work offline as is currently possible. By downloading and “installing” (the details need to be worked out, but this will most likely be a RSL-like SWF library) a connector for a particular third party system. Each connector will be responsible for querying the 3rd party API to get projects, tasks, time entries, etc. using whatever API the system provides. The connector will also be responsible for pushing changes to the third party system that were made in Klok while offline. Because every 3rd party system is slightly different, the connectors may vary significantly. They will also have varying levels of compatibility. For example, Freshbooks does not store timestamps with time entries, they only store the date and the duration. What this means is that when pushing entries made in Klok, the connector will need to convert the timestamps into a duration. When going from Klok to Freshbooks all is fine, but if you enter time directly in Freshbooks, when you pull that entry down, the connector will have no way of determining the time at which the entry should be placed. As of now, I am resorting to placing those entries at 12:00 am.

    Another point of complexity is that some systems, such as Freshbooks, have no way of returning only entries changes since a particular date. So, when you synchronize, you have to get everything which can result in a lot of data going back and forth that hasn’t actually changed. My though is for the connector API to support a Quick Sync mode which just pushes local changes up and a Full Sync mode that synchronizes in both directions.

    One last hurdle is that some systems limit the number of API calls that are allowed in a certain timeframe. I believe Harvest has a limit. In the event that you have to do a Full Sync, you may exceed that number do to the way the APIs work.

    So, while I plan on integrating with the most common systems online, I also expect to support integration with homegrown systems. Whether this means some generic connector that expects a specific REST API, a Flex Library (SWC) that you can use to build your own connector or something else is still up in the air.

    The switch to using SQLite is likely to be pushed down into the final 1.5 version mainly because it would make my life much easier. The connectors will be the main focus for version two along with some bug fixes and the abilty to change the UI to be light vs. the existing dark color scheme.


    Integration with Clicktime would be great. This can be achieved by the product codes being the id of the value in click time, comments are considered notes and then automatically do 15m blocks. Currently I am using Klok and taking the report and manually adding it in but I used just about everything directly from Klok.

    Clicktime has web services and all you need to do is request their WSDL and documentation from the support area of the web site.




    Rob – Please email me. I’m interested in paying you to integrate with a workroom system I currently have running. It has a time tracking tool on the web, so the database is set up, but it’s not as great as this system. I’d also like to talk about making invoices generated from the time tracker.


    For me, the killer feature would be the ability to specify a SQL database to connect with.
    I (like many others who use this software) have a MySQL server up and running for my various blogs and project software, accessible through the internet (ie mysql.erikswebsite.com). It would be great to be able to set up a database on the server for Klok, and then simply point my instance of Klok to the server, along with login details and database name. This would then allow me to access my data from any of the many computers I work on, and provide for easy automated backups along with the rest of my databases. Also, it would enable the user to hack together integration with their own website or other services. It would be really easy to throw together a PHP file that could handle the above suggestion of allowing interactions such as: http://www.erikswebsite.com/klok.php?add=“My new task”&start=20090217-12:34&finish=….. etc



    Using Adobe AIR really only allows me to directly connect to the built in SQLite database. I can’t connect to an other DB with the built in AIR apis. There are some open source projects in the works that may help solve this limitation but for right now the only option for integration with other databases is to have an app server in between that Klok talks to. Then the app running on the app server could connect to whatever DB you want. This is basically how the 3rd part integration is working right now (in my unreleased version 2). I think this is what you are suggesting with the PHP based integration. The real trick with the integration is when the system is offline (without any internet connection). In this situation, I need to a way to remember all the things that need to be synchronized and then when the connection is available sync it up.

    The real delay in V2 is the complexity involved with handling changes made in Klok and changes that might have been made directly through a 3rd party system. If all you intend to manage the projects only through the online system and are only going to add, update and delete time entries with Klok, it would be fairly “simple” to make that work.

    Perhaps if there is enough interest in that, I will get that released sooner than the full fledged integration.


    I’ve just started using klok, and it seems pretty cool!

    A cool third-party integration that I would like to see: Oracle Calendar (we use it at school) and/or Google Calendar (since more people probably use this). Already, after using this program for a short amount of time, I find that I’m duplicating entries, especially meetings. I plan on definitely using Klok for keeping track of how long I’m working, but it would be nice to have everything together… Even if it was just one way, like a “send to Oracle” button. This could be a niche use, but I usually put my often fluctuating work schedule into oracle so that my manager can look and know that I’m working on something, as well as me having a backup record of my work times.

    However, for freelance stuff, Klok is damn near perfect! I’m using dropbox to store my preferences file, and it seems to be working well to sync between the few computers I have.

    Thanks for making this great program!


    We use trac at my j.o.b. – http://trac.edgewall.org/ – and I would love nothing more than a way to integrate Klok with it. So I’m voting trac :)


    It would be SO neat if i could import the to do list from ICal! I use Things for my to do list and its synced with my Ical to do’s. Im still looking for a timetracking software that integrates with those…


    Definately connect with Codebase http://www.codebasehq.com – Very good bugtracking and general workflow system but would be awesome with Klok connector.



    I was not aware about the option Freshbooks which can be used to manage the time among employees. I am working in a corporate firm and we have many agents in a single team itself, so the Freshbooks with the Klok would be very advantageous for the employees to keep the break information in track.

    powered files

Viewing 15 posts - 1 through 15 (of 17 total)
  • You must be logged in to reply to this topic.