Awesome Open Source
Awesome Open Source

# Dendron

A personal knowledge management tool that grows as you do.

Dendron is a local-first, markdown based, hierarchical note-taking application built on top of VSCode and friends.

Whether you organize your notes with PARA or Zettelkasten, link notes together like roam, or simply create notes in an ad-hoc manner, Dendron can help.

Think of it as a second brain to help you make sense of all the information you care about.

Some potential use cases include:

• project management
• personal knowledge base of things you've learned
• CRM to keep track of clients, friends and enemies
• recipe book

To stay up to date on Dendron developments and all things knowledge management, you can follow us at @dendronhq or join us on discord (or even do both)!

# Motivation

"We are overwhelmed with information and we don't have the tools to properly index and filter through it. [The development of these tools, which] will give society access to and command over the inherited knowledge of the ages [should] be the first objective of our scientist" - Vannevar Bush, 1945

Every knowledge management tool today suffers from the problem of information overload - the more information you put in, the harder it becomes, as a human, to get any of it back out again.

The burning need for a tool that would not only overcome this problem but actually work better in the presence of more information was the basis of this project.

# (Hierarchical) Solution

## Hierarchies

Dendron proposes hierarchies as the human solution to information overload. This is because there are few things as effective as a multi-level hiearchy for quickly filtering an overwhelming amount of information to something humans can work with. You can read this blog post for the extended rationale behind this.

In Dendron, you can quickly lookup related notes by their hierarchy. Hierarchies are simply . delimited filenames, similar to the hierarchies made by domain names (eg. github.com).

The following are a few notes that have this hierarchical naming format.

- cli.tar.md
- cli.tar.env.md
- cli.curl.md
- cli.dig.md


## Lookup

Lookup is the process of finding a note by traversing its hierarchy.

Lookups are quick

What's nice about using the . delimited format is that a note can be both a file (something that contains data) and a folder (something that contains other files) at the same time.

You can be a file and have your folder too

Dendron uses fuzzy matching on paths so you don't have to type out the whole path.

Lazyness is the key to success

You can use lookup to figure out what is true!

## Schemas

If you're paying close attention, you might have noticed some icons popup during lookup.

These icons indicate the schema associated with the note. Think of schemas as an optional type system for your information. They describe the hierarchy of your notes and are themselves, represented as a hierarchy.

You can create a schema by adding a YAML file with the following naming scheme {name}.schema.yml to your workspace.

Below is an example of a three-level hierarchy describing cli commands. You don't need to concern yourself with the details of the schema syntax just yet, just know that this schema will match the following glob patterns: cli.*, cli.*.cmd, cli.*.cmd.*, cli.*.env

- id: cli
desc: command line interface reference
parent: root
data:
namespace: true
children:
- cmd
- env
- id: env
desc: variables relevant for command
- id: cmd
desc: subcommands
data:
namespace: true


The + sign next to the suggestion indicates that the note does not exist but is part of the schema.

Schema suggestions don't show you an endless lineup of tags or folders - they only show you suggestions scoped to your specific level of the hierarchy that you are looking at.

The nice thing about these suggestions is that you can also ignore them.

Sometimes rules schemas are meant to be broken

Dendron will show you a ? next to the result in future results but otherwise will assume that you know best.

## VS Code

Dendron is built on top of VSCode, the open-source IDE from Microsoft.

Dendron runs as a plugin inside VSCode. If you use VSCode today, it means that all your current knowledge, settings and extensions will carry over into Dendron. If you don't, no sweat, because Dendron will create an optimal workspace with recommended settings and extensions when you first launch it.

## Recommended Extensions

Since Dendron runs on top of VSCode, it means that you also have access to thousands of extensions to customize Dendron exactly how you like it.

By default, Dendron will initialize your first workspace with the following extensions and features.

The following extensions also work well with Dendron but are not bundled by default. You can download them separately to unlock additional functionality.

• Gitlens 🔍
• Repository/File/Line history and annotations of all your files
• Vim
• VIM key bindings 😍
• Bookmarks
• Bookmark lines within files

# Et cetera

Hopefully, this has been enough to give you a sense of what you can do with Dendron. This project is about 1% complete, both in the sense that it is in preview but also that there's so much more to build. The north star of this project is to achieve Vannevar Bush's original vision - to build a tool of thought that can give humanity "access to and command over the inherited knowledge of the ages".

If you are reading this, you too, are now part of the journey. Let's take back control of our information and use it to build something better, together!

# Getting Started

Dendron can be installed as a vscode plugin. If you don't already have VSCode, you can download it here.

1. Launch the command bar:
• Linux Ctrl+SHIFT+P
• macOS CMD+SHIFT+P
• Windows Ctrl+SHIFT+P
1. Paste the following command and press Enter:
> Dendron: Initialize Workspace


When the workspace opens, it will show dialogue to install the recommended extensions. Though not required, these extensions add all the non-core features of Dendron like wiki links and tagging support.

# FAQ

See FAQ to answers for common questions.

# Contributing

We welcome community contributions and pull requests. See CONTRIBUTING for information on how to set up a development environment and submit code.