Design

Overview

Dendron is composed of three main components and a collection of complementing libraries.

Below is an example of the initialization process

Dendron initialization process

sequenceDiagram participant client participant engine participant store participant fileSystem participant noteParser client->>engine: initialize engine->>store: initialize store->>fileSystem: fetchAllnotes fileSystem->>store: sendNotes; store->>noteParser: parseAllNotes noteParser->>store: parsedNotes store->>engine: return status engine->>client: return status

Dendron has a CLI that executes the above workflow as well, except replace plugin with cli. The difference is that the CLI will tear down the server and engine after the command has completed whereas for the plugin, the server and engine run as long as the workspace is active.

Note that you can run just the server by itself using the launchEngineServer command.

Concepts

Engine

Responsible for indexing notes and lookup methods.

Engine Client

An object that exposes the Engine API. Currently the only example is an API client .

Engine Server

Local express server that runs the engine and can be queried over http.

Major Components

Dendron Plugin

This is the Dendron VSCode extension

Dendron Engine

This is responsible for Dendron's hierarchal index and lookup capabilities. It also contains Dendron specific markdown parsers. While the name says server, there is no server that comes with the engine

Dendron API Server

This package contains the express server implementation for Dendron. It provides a REST based shim to allow the Dendron plugin to talk to the engine.

Dendron Next Server

Contains Dendron UI components.

Other Components

Dendron Common All

This is a bunch of types and utilities that is consumed by multiple Dendron dependencies

Dendron Common Server

This is common utilities that are used by server-side versions of Dendron (currently, this is the only available built of Dendron - in the future, the plan is to have a browser only client)

Dendron CLI

This package lets you access Dendron via CLI.

Next

  • You can see the full list of packages as well as detailed documentation here


Children

  1. Commands
  2. Dotted filenames
  3. Lookup
  4. PlantSeed
  5. Pods
  6. Publishing
  7. Remark
  8. Summary