lakoliu / Furtherance

Track your time without being tracked
GNU General Public License v3.0
258 stars 23 forks source link

Sync with an online service #29

Closed 12people closed 1 year ago

12people commented 2 years ago

It'd be great if Furtherance could provide the option of syncing with an online service, for easier cross-device use.

Kimai is a free and open-source online tracker that also allows self-hosting. It has an open API that could be used for this integration.

lakoliu commented 2 years ago

That's interesting, I hadn't thought about that. Part of what I love about Furtherance is not having to sign in or create an account to use it, but I can also see the value in adding the option to sync across devices. Thanks for the suggestion, I'll keep it in mind!

Gotterbild commented 2 years ago

@lakoliu One of the ways to implement online sync is to just allow to save app's DB into a custom location.

So, user just saves it into a folder that syncs to GDrive/Dropbox/Nextcloud/You-name-it and gets the online sync.

However, the proper and private implementation of this option would require some sort of protection by encryption. Probably even with a password.

12people commented 2 years ago

Saving a DB to a folder is definitely an okay option. For me personally, it would make more sense as a backup rather than a sync option, as it would inherently not be able to elegantly deal with version conflicts.

I think encryption could be left to the service one is using (e.g. services like ProtonDrive, MEGAsync, Tresorit etc. all offer encrypted storage; NextCloud offers it optionally).

That said, I'd still appreciate sync with an online service like Kimai, to allow for multiplatform use and version conflict resolution.

toger5 commented 2 years ago

Another option would be to use an open protocol like matrix. There is a matrix rust sdk that could be used to log in and allow everyone to use a private encrypted matrix room to store the data. Each activity could even be saved as an event, so that there are no conflicts even if you track the time with different pc's (each pc would just add the events to the room and furtherance would than add the accumulated time locally). Users could even host their own matrix servers so that furtherance is entirely independent of any hosting provider.

flxzt commented 2 years ago

another possible solution that has encrypted networking and wouldn't require an account, nor a server at all: using CRDT's like automerge or Yjs and a peer to peer networking library such as libp2p. CRDT's have the crucial feature that they are able to merge different clients without any conflicts, while still allowing them to be offline for extended time periods.

but saving the db in a custom location would also be great, independent of a syncing feature. :)

lakoliu commented 1 year ago

Just wanted to post an update that the latest version of Furtherance for Windows includes the ability to store the database in a user specified location, therefore making it possible to store it in the cloud for syncing with other devices. All versions of Furtherance (Android, Windows, and Linux) use compatible databases.

The next task on the agenda is to bring this feature to the Linux app.

lakoliu commented 1 year ago

Commit 87c0577 makes it possible to change the database location in Furtherance for Linux, as well as import an existing database or backup the current database. 🥳This change will be in the next release.