DEV Community

Pepe
Pepe

Posted on

My Note-taking System or Zettelkasten for Devs

I’ve been using the Zettelkasten method with Obsidian to take notes, connect ideas, and build a personal knowledge system. In this post, I’ll share how I’ve set it up, why it works for me, and how it’s helped me think more clearly and creatively.

I tried several note-taking apps like Evernote, Notion, OneNote, Google Keep; but none felt quite right until I stumbled upon Obsidian. One of its biggest advantages for me is the high level of customization and the fact that notes are written in Markdown and stored locally. However, it wasn’t just about switching apps—my entire note-taking workflow had to change.


Customization (Themes, Fonts, Plugins)

First of all, I changed my Obsidian theme. In Settings > Appearance > Themes, you can manage themes. My favourite one is Cupertino, but FastPpuccin and Tokyo Night are pretty good as well.

For fonts, I’m using JetBrains Mono. It’s a really nice monospace font and reminds me of working in an IDE rather than a note-taking app. You can change it in Settings > Appearance > [Interface font | Text font | Monospace font]. I use the same font for each.

Here’s my list of installed community plugins (Settings > Community plugins):

  • calendar
  • git
  • kanban
  • iconize
  • mind map
  • excalidraw
  • commander
  • tasks
  • style settings
  • templater
  • advanced tables

The top ones by usage are:

  • Git – for syncing notes to a private GitHub repo
  • Iconize – for customizing folder structure
  • Calendar – for daily notes

I’m also using a custom CSS snippet for rainbow folder colors. I found a good snippet in the Obsidian forum here in this thread.

.tree-item-self.nav-folder-title.fn-is-active,
.tree-item-self.nav-file-title.fn-is-active,
.nav-folder-title.is-active,
.nav-file-title.is-active {
    background-color: var(--background-modifier-hover);
}

.nav-files-container>div {

    >.tree-item:nth-of-type(8n+1) * {
        --folder-color: var(--color-pink);
        --folder-color-rgb: var(--color-pink-rgb);
    }

    >.tree-item:nth-of-type(8n+2) * {
        --folder-color: var(--color-red);
        --folder-color-rgb: var(--color-red-rgb);
    }

    >.tree-item:nth-of-type(8n+3) * {
        --folder-color: var(--color-orange);
        --folder-color-rgb: var(--color-orange-rgb);
    }

    >.tree-item:nth-of-type(8n+4) * {
        --folder-color: var(--color-yellow);
        --folder-color-rgb: var(--color-yellow-rgb);
    }

    >.tree-item:nth-of-type(8n+5) * {
        --folder-color: var(--color-green);
        --folder-color-rgb: var(--color-green-rgb);
    }

    >.tree-item:nth-of-type(8n+6) * {
        --folder-color: var(--color-cyan);
        --folder-color-rgb: var(--color-cyan-rgb);
    }

    >.tree-item:nth-of-type(8n+7) * {
        --folder-color: var(--color-blue);
        --folder-color-rgb: var(--color-blue-rgb);
    }

    >.tree-item:nth-of-type(8n+8) * {
        --folder-color: var(--color-purple);
        --folder-color-rgb: var(--color-purple-rgb);
    }

    >.tree-item {

        * {
            --nav-item-color-active: var(--folder-color);
            --nav-item-background-active: var(--background-modifier-hover);
            --nav-item-background-hover: rgba(var(--folder-color-rgb), var(--folder-hover-opacity));
            --nav-indentation-guide-color: rgba(var(--folder-color-rgb), var(--folder-indentation-opacity));
        }

        .tree-item-children {
            border-inline-start: var(--nav-indentation-guide-width) solid var(--nav-indentation-guide-color);
        }

        .nav-folder-title {
            --nav-item-color-hover: var(--folder-color);
            --nav-collapse-icon-color: var(--folder-color);
            --nav-item-color: var(--folder-color);
        }

        .nav-file-title: "hover,"
        .tree-item-self.fn-is-active:hover {
            background-color: rgba(var(--folder-color-rgb), var(--folder-hover-opacity));
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Last but not least, the Drag-and-Drop feature, you can completely change the experience of using Obsidian. This is how it might look in the end:

Example of Obsidian customization


Note-taking Workflow

Vault, Folders, Metadata, Tags, Backlinks

I am using one vault for everything. You don't need to separate your personal notes from study, work, and travel logs. I recommend using the same vault for your whole life, and you might be surprised by the relations between them. There are some rules for the Zettelkasten method I'm not following at all. However, there is no "one fits them all" rule, so I have little bit improved it for myself.

My folder structure looks like this:

Folder Structure

The naming convention in my case is {NUMBER} - {FOLDER NAME}, so I am in charge of the folder order. An icon in front of the name was added by the plugin iconize. You can choose from many of them, and each folder or even file can have a different icon. I am not using any subfolders, only this base structure.

Folder Flow Overview

Folder Purpose Typical Note Types Next Step
00 - Drafts Capture quick thoughts, meeting notes, or daily reflections. Daily logs, idea dumps, scratch notes. Move to Develop when you refine the idea.
01 - Develop Build structured knowledge from drafts. Concepts, designs, troubleshooting guides. Link to Research or Knowledge Sharing.
02 - Research Store external info and analysis. Article summaries, experiments, docs references. Connect to related Develop notes.
03 - Knowledge Sharing Write polished, shareable outputs. Internal guides, training notes, blog drafts. Archive when published or outdated.
05 - Other Keep miscellaneous notes. Admin info, lists, random ideas. Archive or clean up periodically.
96 - Images Store visual assets. Diagrams, screenshots, architecture sketches. Embed into any note using ![[image.png]].
97 - Indexes Central navigation and overview. MOCs, topic indexes, dashboards. Continuously updated as knowledge grows.
98 - Archives Store finished or outdated notes. Completed drafts, old guides, deprecated docs. None — reference when needed.
99 - Templates Define reusable note structures. Templates for daily, books, courses, README, MOC. Used by Templater to create new notes.

Example Flow

1️⃣ You start your day → create a new note in 00 - Drafts
2️⃣ You refine an idea → move to 01 - Develop
3️⃣ You read new docs or articles → save to 02 - Research
4️⃣ You write an internal guide → store in 03 - Knowledge Sharing
5️⃣ Once published → move to 98 - Archives
6️⃣ Update links in your 97 - Indexes
7️⃣ Use 99 - Templates to stay consistent


Metadata

Metadata lives at the top of your note, between --- lines.
It gives structure to your knowledge, so you can filter, sort, and connect notes automatically.

Example:

---
type: concept
status: draft
project: gitlab-pipelines
created: 2025-10-14
updated: 2025-10-15
tags: [gitlab, cicd, optimization]
related:
  - [[Docker BuildKit caching performance]]
  - [[Improving GitLab Pipeline Performance]]
---
Enter fullscreen mode Exit fullscreen mode

Why it matters?

  • Makes notes queryable (type: concept, status: draft).
  • Tracks lifecycle (created, updated, status).
  • Enables custom dashboards (e.g., list all drafts or notes in a project).
  • Creates semantic connections (through related).

Tags

Tags are broad categories or topics. It is like hashtags on social media. They’re flexible, quick to add, and great for cross-cutting themes.

Example:

tags: [docker, gitlab, ci, performance]
Enter fullscreen mode Exit fullscreen mode

Usage tips:

  • Use lowercase, consistent tags (gitlab, not GitLab).
  • Don’t overuse — aim for 3–5 per note.
  • Use tags for themes, not specifics:

    • #gitlab, #security, #aws
    • 🚫 #docker-caching-troubleshooting-oct2025

Best for:

  • Grouping notes by concept (e.g., all #terraform notes)
  • Creating quick entry points into MOCs
  • Filtering in Dataview dashboards

Backlinks

Backlinks are connections between notes. This is the heart of the Zettelkasten method.
When you link [[Another Note]], Obsidian automatically creates a backlink in that note.

Example in context:

## Related
- [[Docker BuildKit caching performance]]
- [[GitLab CI caching explained]]
Enter fullscreen mode Exit fullscreen mode

Obsidian’s Backlinks panel then shows where this note is referenced — helping you discover hidden connections.

💡 Why backlinks matter

  • Mimic the way your brain links ideas.
  • Create a web of knowledge instead of isolated documents.
  • Help resurface forgotten notes when writing or researching.

How They Work Together

Feature Function Example
Metadata Structured attributes for automation and queries type: concept, project: gcp-training
Tags Quick topic grouping and filtering #gcp #terraform #security
Backlinks Semantic connections between ideas [[Terraform state management]]

Together they allow you to:

  • Build topic-based dashboards (via tags)
  • Track note lifecycle (via metadata)
  • Discover hidden relationships (via backlinks)
  • Navigate your “DevOps brain” effortlessly

My Templates

In a world where DevOps work involves managing endless streams of configurations, scripts, ideas, and documentation, Obsidian offers more than just a note-taking tool. It becomes a personal knowledge system.
By combining Obsidian’s flexibility with the Zettelkasten method, Developers and DevOps engineers can transform scattered information into a living network of insights.

Here you can find my Obsidian Vault template described in this article:
https://github.com/pkorsch/obsidian-vault-template

Feel free to use it and improve it according to your needs. The best way to write and keep your notes is "YOUR WAY!"

Top comments (0)