Link Search Menu Expand Document

Hierarchies

Within a vault, your notes are stored hierarchically as . delimited markdown files.

Below is a hypothetical hierarchy for a file tree:

.
└── project1/
    β”œβ”€β”€ project1/designs/
    β”‚   └── project1/designs/promotion.png
    β”œβ”€β”€ project1/paperwork/
    β”‚   └── project1/paperwork/legal.md
    └── project1/tasks/
        β”œβ”€β”€ project1/tasks/task1.md
        └── project1/tasks/task2.md

The same hierarchy in Dendron would look like the following:

.
β”œβ”€β”€ project1.md
β”œβ”€β”€ project1.designs.md
β”œβ”€β”€ project1.designs.promotion.md
β”œβ”€β”€ project1.paperwork.md
β”œβ”€β”€ project1.paperwork.legal.md
β”œβ”€β”€ project1.tasks.md
β”œβ”€β”€ project1.tasks.task1.md
└── project1.tasks.task2.md

Concepts

In the following concepts, we will be using the following file tree

.
β”œβ”€β”€ dendron.code-workspace
β”œβ”€β”€ dendron.yml
β”œβ”€β”€ docs/
└── vault/
    β”œβ”€β”€ root.md
    β”œβ”€β”€ root.schema.md
    β”œβ”€β”€ dendron.md
    β”œβ”€β”€ dendron.faq.md
    β”œβ”€β”€ ...
    └── assets/images

Root

Every vault has a root. This is the root.md.

Domain

The domain is the root of a specific hierarchy. In our example vault, we have one domain - dendron.

Why Hierarchies?

Dendron is built around hierarchies and the axiom that a canonical hierarichal representation of notes is one of the most effective ways of managing large numbers of notes. You can read more about the thoughts behind this here.

What’s with the .’s?

  1. It allows each file to also be a folder. This means your notes can have data but also contain other notes.
  2. It makes it much easier to perform certain refactoring operations. For example, say you had the following schema ```yml
    • id: a-parent children:
      • child-a
      • child-b
    • id: child-a
    • id: child-b Lets say you wanted to make `child-b` a child of `child-a` yml
    • id: a-parent children:
      • child-a
    • id: child-a children:
      • child-b
    • id: child-b
       With the classical folder hierarchy, you would need to turn `child-a` into a folder and then create a custom file to hold the content from the original `child-a`
      

      . └── a-parent └── child-a β”œβ”€β”€ child-a-note └── child-b

       With the `.` delimited hierarchy, this becomes a simple rename operation
      

      . β”œβ”€β”€ a-parent.child-a └── a-parent.child-a.child-b ```

  3. It allows us to create stubs for parts of the hierarchy that don’t exist and not clutter our file system with empty folders. With the classical folder hierarchy
    .
    └── a-parent
        └── child-a
            └── grandchild-a
                └── great-grandchild-a.md
    

    With the . delimited hierarchy

    .
    └── a-parent.child-a.grandchild-a.great-grandchild-a.md