Skip to content

Node

In Eidos, nodes are the fundamental data units - equivalent to files in a traditional file system. Since Eidos stores all dynamic data in a single SQLite file, we call them “nodes” rather than files. Each node has a specific type that determines its function and purpose.

Eidos provides four built-in node types:

  • doc - Document nodes for writing and storing text content
  • table - Table nodes for managing structured data
  • folder - Folder nodes for organizing other nodes
  • dataview - Data view nodes for querying and displaying data

All nodes are organized in a tree structure, similar to a file system, but each node knows its type and how to handle its content.

Node information is stored in the eidos__tree table:

CREATE TABLE IF NOT EXISTS eidos__tree (
id TEXT PRIMARY KEY,
name TEXT,
type TEXT,
parent_id TEXT NULL,
is_pinned BOOLEAN DEFAULT 0,
is_full_width BOOLEAN DEFAULT 0,
is_locked BOOLEAN DEFAULT 0,
icon TEXT NULL,
cover TEXT NULL,
is_deleted BOOLEAN DEFAULT 0,
hide_properties BOOLEAN DEFAULT 0,
position REAL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
FieldTypeDescription
idTEXTUnique identifier for the node
nameTEXTNode name
typeTEXTNode type (doc/table/dataview/folder)
parent_idTEXTParent node ID
iconTEXTNode icon
coverTEXTNode cover
is_pinnedBOOLEANWhether the node is pinned
is_full_widthBOOLEANWhether to display in full width
is_lockedBOOLEANWhether the node is locked
is_deletedBOOLEANWhether the node is deleted
hide_propertiesBOOLEANWhether to hide properties
positionREALNode position
created_atTIMESTAMPCreation timestamp
updated_atTIMESTAMPLast update timestamp

Eidos supports adding new node types through extensions. Extension node data is stored in the eidos__extnodes table:

CREATE TABLE IF NOT EXISTS eidos__extnodes (
id TEXT PRIMARY KEY,
blob BLOB,
text TEXT,
type TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
FieldTypeDescription
idTEXTUnique identifier for the node
typeTEXTExtension node type, e.g., excalidraw
blobBLOBBinary data (images, audio, video, etc.)
textTEXTText data (JSON, Markdown, etc.)
created_atTIMESTAMPCreation timestamp
updated_atTIMESTAMPLast update timestamp

Extension nodes choose storage fields based on data type:

  • blob for storing binary data
  • text for storing text data

For example, the excalidraw extension uses the text field to store JSON-formatted drawing data.