Medvedev91 / timeto.me

App with pomodoro, checklists, goals, tasks, repetitive, calendar and time tracking.
https://timeto.me
GNU General Public License v3.0
203 stars 13 forks source link

Add a sync option #38

Closed Abdullah16M closed 3 months ago

Abdullah16M commented 3 months ago

Syncing can be achieved by:

  1. Providing a syncing service with a subscription (this will encourage the development of this project, and many people don't want to bother setting up a webdav server and maintain it after)
  2. Using other syncing services (not the best for privacy)
  3. Allowing users to configure syncing as they like

I think starting by supporting webdav is the best route for both options.

Why would this be useful? I use a phone and a tablet, being able to switch between them while using the app will be very convenient. Thanks for this great project.

Medvedev91 commented 3 months ago

Syncing is a big thing. I've thought a lot about how to do this. But there are many challenges to implementing.

  1. Webdav is a good thing for syncing files, but not database. It will require deep integration into the app code.
  2. Another problem is when two devices produce inconsistent events offline.
  3. Apps can have different versions with different schema.

There are many others problems I've found.

I tend to implement only reliable features, I don't have an idea of how to do this for syncing yet. So I decided to suspend this feature.

Thanks for the issue and the options offered.

Abdullah16M commented 3 months ago

I agree with you that syncing is a big thing, and i think that to make more doable:

  1. Standardized the database format, this makes it more clear how to approach things in the future. the more stupid the better.
  2. As for inconsistent events offline, anki (open source) which is an app that i use alot solves this issue by asking you in cases of conflict: "how do you want to proceed? Upload to ankiweb or download from ankiweb" (example: you used your phone and uploaded to ankiweb (by default before exiting it syncs), then you opened anki on your tablet, your tablet start to sync, ...oops there's a conflict for some reason!, now anki will ask you "How do you want to proceed? Download from ankiweb/Upload to ankiweb.") This effectively solves the problem in many cases.

Anki: https://github.com/ankitects/anki

Medvedev91 commented 3 months ago

Standardized the database format

The app is in active development. Database schema is constantly changing.

This effectively solves the problem in many cases.

Yes, there are no problems that can't be solved (almost). I'm not saying I won't implement synchronization. I will do it, but later.

I have dozens of features I want to implement first. Only after stabilization do I plan to do a synchronization, may be including PC client.