apankrat / nullboard

Nullboard is a minimalist kanban board, focused on compactness and readability.
https://nullboard.io/preview
Other
2.56k stars 192 forks source link

Cloud Support #2

Open joelthe1 opened 5 years ago

joelthe1 commented 5 years ago

This looks great! I really like the minimalism. Something I would like is the ability to view my todo-lists from my phone. I use Firefox Focus on mobile, which clears cache/history on exit each time. This would be a problem for nullboard since state is saved locally. Is there a way for me to sync this on my personal server and have it show-up from any device that I use. It would be really nice for it not be tied to a specific device.

iifeoluwa commented 5 years ago

It says Mobile support is basically untested and Desktop-oriented so this might be a reason the feature isn't available yet. Also, there are lots of todo apps with sync features, offline use is essentially the only reason this has its tiny bit of uniqueness.

makomi commented 5 years ago

@iifeoluwa Which other non-local todo app is most similar to nullboard?

apankrat commented 5 years ago

I have a need myself for something like this, so I've been giving it some thought.

I think that the full-on sync with server storage is an overkill. It will take time to implement correctly and yet only a part of its functionality will be in actual demand. I mean, there are some edge cases that very few people will run into (two copies of the same board, have the same note modified, but differently, then they go online -> one of them will have trouble sync'ing -> need some sort of UI for resolving this and so on and so forth).

So what I am leaning towards to instead is to allow two smaller, more "atomic" things:

  1. Backing up and restoring boards, in encrypted form. So the server ends up being just a dumb data blob storage. I like this because the server acts basically as a generic key-value store, and that can be recycled for other projects.

  2. Allowing to "publish" boards, either publicly or privately. That is, making their copy available to others, and perhaps "subscribing" to the updates.

apankrat commented 5 years ago

@makomi - Trello or Wekan.

tionis commented 4 years ago

What about using a simple API like jsonstore to save the board. (use PUT and GET requests to overwrite the json object at an URL only you know).
On every save it could be uploaded via PUT request and every minute or so you would GET updates.
The big disadvantage of this very simple approach would be the possibility that different devices overwrite each other, but the undo button could possibly lessen this problem (or you could never delete any element in conflict situations).

tionis commented 3 years ago

Another idea would be to use RemoteStorage.js in combination with the Remote Storage Widget

almereyda commented 3 years ago

Next to https://remotestorage.io, we also know of other zero data apps and storage providers like https://solidproject.org that are quick and easy to integrate, and provide a complete solution to sync client state to a trustable remote.

Similar suggestions exist for IndexedDB/PouchDB #12 and for Google Drive #31

jedahan commented 3 years ago

We could (de)serialize the state in the url after a hash fragment

TCB13 commented 2 years ago

First of all thank you for this great project @apankrat .

Now, I'm not aware of how the protocol works, but I've an idea about this. Why can't nullboard just store the data in WebDAV? There are a bunch of client-side only JS WebDAV implementations and this would make it easy for anyone to sync with a ton of self hosted stuff starting at your basic nginx stack to Nextcloud.

So what I am leaning towards to instead is to allow two smaller, more "atomic" things:

1. Backing up and restoring boards, in encrypted form. So the server ends up being just a dumb data blob storage. I like this because the server acts basically as a generic key-value store, and _that_ can be recycled for other projects.

2. Allowing to "publish" boards, either publicly or privately. That is, making their copy available to others, and perhaps "subscribing" to the updates.

WebDAV seems perfect for this :). For instance, at https://github.com/floccusaddon/floccus and https://github.com/TCB13/LoFloccus we're using it exactly this way to store and sync the user's bookmarks.

Thank you.