I ditched folders and tags for an "Index" property. Here's how I automated my vault to never lose a note again (Dataview + Buttons + Templater) (Video added)
Hey everyone,
I wanted to share a workflow I’ve been refining. I love the idea of a flat folder structure and relying on links rather than rigid folders or tags. However, I always had this underlying fear that notes would get buried, become "orphans," and vanish into the abyss of my vault.
To solve this, I completely shifted to an Index-based link management system, integrated with a modified PARA method and some heavy automation. Here is how it works.
1. The Core Concept: The "Index" Property & PARA
Every single note in my vault has an Index property in its frontmatter. Instead of text or tags, this property contains links to MOCs (Maps of Content) or category notes (e.g., [[Seminar]], [[2026 OS Intern]]).
I also integrated the PARA method right into this property:
- Active efforts get an index link to
[[Project]]. - General knowledge and references get
[[Resource]]. - When a project is done or a note is no longer relevant, I add in the link to
[[Archived]]. This ensures my active Dataview queries stay clean and I don't see cluttered, outdated notes.
2. The Dashboards: Dataview + Buttons
The actual "Index" notes (like my Seminar note) act as dynamic dashboards. I use the Dataview (and Base) plugins to aggregate every child note that links back to this index.
I also use the Buttons plugin to create new child notes directly from this dashboard with a single click.
Here is what my Index template looks like:
```button
name New child note
type command
action Templater: Create create child note
```
```Dataview
TABLE
dateformat(created,"yyyy-MM-dd") AS "Created",
dateformat(modified,"yyyy-MM-dd") AS "Modified"
FROM <%tp.file.title%> AND !"99 Templates"
WHERE contains(join(Index), "<%tp.file.title%>") AND !contains(join(Index), "Archived")
SORT created DESC
SORT modified DESC
```
3. Templater Auto-Properties
This is where the magic happens. The one annoying thing about this system was that when I linked a note to [[Seminar]], I manually had to add properties like Speaker, Location, and Date.
I wrote a Templater script bound to a hotkey that reads the Index property and automatically injects the correct frontmatter properties and even appends the right body templates.
But it gets better: It understands combinations.
- If my Index is just [[Review]], it injects basic review properties (Date, One-line review).
- If my Index has [[Review]] AND [[Movie]], it ignores the basic review properties and injects specific ones (Director, Cinema, Rating) and appends my Movie Review template at the bottom of the note.
Here is a sneak peek of the configuration dictionary I use at the top of my Templater script to easily manage these rules:
const propertyRules = {
// Single Index
"Seminar": {
"$template": "Templates/Seminar_Template.md",
"Speaker": null,
"Location": null
},
// Combined Index
"Review + Games": {
"$template": "Templates/Game_Review_Template.md",
"Game_Title": "",
"Platform": [],
"Rating": 0
}
};
Whenever I create a new note, I just drop in the index links, hit my hotkey (or a button!), and Obsidian instantly populates the exact metadata fields and template bodies I need based on the context.
No rigid folders, no messy tag lists, and zero lost notes. Everything is connected dynamically.
Has anyone else tried a strictly link-based index system like this? Let me know what you think!