Eleventy Notes

Notes

Without configuration, the sidebar shows all your notes in a single group. You can customize the sidebar to show notes in different groups. You can filter notes based on their location, name and tags.

Filter by location / name

You can filter notes by their location and name using a RegEx pattern. The pattern is case-insensitive.

// /app.json
{
"sidebar": {
"notes": [
{
// Show all notes in the "posts" folder
"pattern": "/posts/"
}
]
}
}

Filter by tags

You can filter notes by their tags. Notes that have at least one of the specified tags are shown. You can combine this with a location filter.

// /app.json
{
"sidebar": {
"notes": [
{
// Notes that have at least one of these tags are shown.
"tags": ["one", "two"]
}
]
}
}

Multiple Groups

You can create multiple groups with an optional label. Groups with a label can be collapsed by the user and are expanded by default. You can change the default expansion state by setting the expanded property to false.

// /app.json
{
"sidebar": {
"notes": [
{
"label": "Posts",
"pattern": "/posts/",
"tags": ["published"]
},
{
"label": "Archived",
"expanded": false,
"pattern": "/archive/"
}
]
}
}

Tree View

Each group shows a flat list of notes by default. Set the tree property to display the notes in a tree view based on their location in the file system.

{
"sidebar": {
"notes": [
{
"label": "Posts",
"tree": true
}
]
}
}

Structure

If you enable the tree view, the complete folder structure is shown in the sidebar. You can define a map of search/value patterns to replace parts of the path. This is useful if you want to show a different folder structure in the sidebar than in the file system. A common use case is to remove the root folder from the path:

{
"sidebar": {
"notes": [
{
"pattern": "^/Articles/",
"tree": {
"replace": {
"^/Articles/": ""
}
}
}
]
}
}

Expansion State

You can customize whether folders should be initially collapsed or expanded. If not configured, all folders are expanded.

{
"sidebar": {
"notes": [
{
"tree": {
// Collapse all folders by default
"expanded": false,

// Expand the first + second level, collapse all other levels
"expanded": 2,

// Expand all folders that match the given pattern (RegEx pattern)
"expanded": "/Popular Posts$"
}
}
]
}
}

The user can collapse/expand folders manually. Navigating to a different note or refreshing the page will restore the expansion state. Opening a new tab or closing the browser will reset the expansion state. The current note is always expanded.

If you modify the expansion state in the app.json file, make sure you open a new tab to see the changes, otherwise the expansion state will be restored and not reflect the changes.

Notes as folders

Clicking on a folder in the tree view toggles the notes underneath that folder but doesn't navigate. However, you can add a note for a folder that the user can navigate to by clicking on it. There are two ways to create a note for a folder:

Either create a file with the same name as the folder outside the folder:

Example 1.md
Ideas.md            <--- This is the note for the "Ideas" folder
Ideas/
└── Crazy Idea.md

Or create an index.md inside the folder:

Example 1.md
Ideas/
├── index.md        <--- This is the note for the "Ideas" folder
└── Crazy Idea.md

The first approach is recommended because it works better with Wikilinks and avoids having a lot of index.md files in your folder structure (which can be confusing).

Sorting

All notes are sorted ascending by their display name (which is either the title, if specified, or the file name). You can customize the order of specific notes by adding a sort property.

---
sort: 1
---


My Note

Examples

All notes

If you want to show all your notes in a single group, add an empty group without a filter. You can also omit the notes property completely which will use the default configuration:

{
"sidebar": {
"notes": [{}]
}
}

Notes in root

Here is an example that shows all notes in the root. Notes in subfolders are excluded:

{
"sidebar": {
"notes": [
{
"pattern": "^/[^/]+$"
}
]
}
}

Notes in subfolder

The following group renders all notes of the subfolder "Example":

{
"sidebar": {
"notes": [
{
"label": "Example",
"pattern": "^/Example/"
}
]
}
}

Virtual Folders

The tree view can be used to create virtual folders. You can turn the flat list of notes into a tree view by replacing parts of the path with a different value. For example, you can group your weekly notes by year if the file names start with the year:

{
"sidebar": {
"notes": [
{
"label": "Weekly Notes",
"tree": {
"replace": {
// Turn "/2023-01" into "/2023/01"
"^/([0-9]{4})": "/$1/"
}
}
}
]
}
}