Graph

img

User

Accounts are stored in the neo4j graph, labeled with user. The account identity is the email used to sign up (and later verify account). Passwords are hashed with scrypt @ standard settings (N = 16384, R = 8, P = 1) and transmitted in plain-text. (Use HTTPS!)

Project

A project is represented as a graph node with a project label. Projects are the basic premise on which collections expand. Each project has a taxonomy.

Collection

A collection is represented as a graph node with a collection label. Collections are the main and only way of organizing entries and are mainly identified by a combination of their unique id and non-unique (user provided) name. Each collection has a (potentially nil) set of taxonomy extensions of the base taxonomy (provided by the project).

Entry

An entry is represented as a graph node with a entry label. Each entry has an additional entry type label: research or challenge. Entry nodes contain the properties specific to the entry type. They also have relations to their entities. The relationship type is the taxonomy classification, e.g :ASSESSING.

Entity / Facet

An entity is represented as a graph node with a facet label and is the free text sample of at least one entry. The relation type between an entry and facet determines the classification of that entity (text sample) for that specific entry. Many entries can classify the same entity, even with different classifications.

Token

A token is represented as a graph node with a token label. Tokens are in fact a special type of authentication nodes. Tokens are given meaning by their relation to the user node. At the moment only two relation types exist: EMAIL_TOKEN and RESET_TOKEN for email verification and password reset, respectively. At the moment tokens don't expire (but they probably should).