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.