Welcome! This is the technical documentation for the Serenity project.

Serenity is knowledge management application offering workspaces for teams to collaborate on pages. Serenity is end-to-end encrypted, meaning that only the users can access the content.

High level terminology

  • Document (in the UI referred to as Page) is a single WYSIWYG document.
  • Folder is a container for pages or other folders.
  • User is a person who can log in to the application.
  • Workspace is the entity that combines a set of folders and pages and have a set of users with access to it.

High level sharing

The content of a workspace is shared between the users of the workspace. While there are different roles viewer, commenter, editor and admin all of them have access and can decrypt the content.

In addition to that a single document can be shared via a share link.

The architecture is prepared to also allow sharing entire folers and all it's sub-folders and documents via a share link. This though is not yet implemented and we are evaluating if it is a useful feature.

High level architecture

While the server can not access any of the content the clients rely on the server to reliably forward the encrypted information and unencrypted meta-data to the other users. In addition to that a sever does several checks to also prevent that clients receive information that they are not allowed to see or entries from other users without authorization.

Meta data

There is a lot of meta data associated with each entity. While we would like to reduce the amount of meta-data that the server stores, this was not in scope of the initial version of Serenity. Further research in the future in areas like zero-knowledge protocols might allow us to reduce the amount of meta-data that the server stores.