For installation & deployment, see :

Developer notes

Introduction

Notes are both stored in a server (the NoxuNote cloud) and in browser's storage (also called "cached version")

In doing so, user can create, read, update and delete notes without an internet connection and synchronize the the changes when the connection comes back.

Conception choices

Note metadata (title, author, lastedit, description, etc..) are stored apart from Note content.

A synchronization might happen at any time, user can also ask for it.

In order not to interrupt the usage of the app, this should be a background task.

But sometimes, when the cached version has been updated and also the online version since last synchronization, a conflict might happens and we need to ask the user how to deal with it.

Dealing with conflicts

Solving a conflict automatically (without prompting the user) might destruct some information.

We needed to find a balance between interrupting the user workflow for solving conflicts and doing it automatically.

Removing a piece of information from metadata is acceptable (for example, by automatically keeping the more recent change on a note title), so we do not need to ask the user how to deal with the conflict.

Removing a piece of information from note content is not acceptable.

Integrating the process in NoxuNote

We separated the synchronization process in 2 phases :

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/4745693c-9ded-4202-9cf0-06f03b2201d4/sync.png