Welcome back!

Resume reading from where you left off?

Obsidian cover showing notes, links, and a knowledge graph
Tools

Mastering Obsidian: The Complete Beginner-to-Pro Guide

Learn how to set up an Obsidian vault, organize notes, build backlinks and daily workflows, and turn scattered ideas into a dependable knowledge system.

By Pankaj Sonani from aigrama.net • 18 min read
#obsidian#knowledge-management#productivity#notes

Welcome! This guide is written for anyone—including complete beginners and junior engineers—who has never used Obsidian before. By reading this single document, you will understand how Obsidian works from the ground up, how this vault (pan-knowledge) is organized, how to manage University courses, Production Apps, To-Do lists with ETA dates, Database views (Bases), Git backups, and how to troubleshoot common issues.

1. What Is Obsidian & Why Use It?

Most note-taking apps (like Notion, Google Docs, or OneNote) lock your notes inside proprietary cloud databases and force you to organize everything into rigid folders.

Obsidian is different in 3 fundamental ways:

  1. Plain-Text Markdown (.md) Files on Your Computer: Every note is just a normal text file stored in a folder on your hard drive (/home/pankaj/Pan-Dev/pan-knowledge). It works 100% offline, opens instantly, and works seamlessly with Git.
  2. Bidirectional Linking ([[WikiLinks]]): Instead of wondering “Which sub-folder does this note belong in?”, you connect notes together using [[double brackets]]—just like Wikipedia pages link to each other.
  3. Bottom-Up Knowledge Building: You capture quick thoughts first (in your Daily Note or Inbox) and connect them into larger hubs (Maps of Content / MOCs) as your knowledge grows.

2. What Is a “Vault”? (And Why You Only Need ONE Vault)

What Is a Vault?

In Obsidian, a Vault is simply a regular folder on your computer (/home/pankaj/Pan-Dev/pan-knowledge) that contains your .md files plus a hidden .obsidian/ folder where Obsidian saves your preferences and plugins.

Beginner Question: “Should I create separate Vaults for Personal, University, Work, and Projects?”

NO! Keep ONE single vault (pan-knowledge) for everything that belongs to you.

Think of a Vault as your entire brain, not a single binder. If you create separate vaults for University, Production Apps, and Personal, those vaults cannot talk to each other:

Feature ✅ 1 Single Vault (pan-knowledge) ❌ Multiple Separate Vaults
Linking Notes ([[...]]) You can link a University lecture note on [[Java 25 Structured Concurrency]] directly inside your Production App project [[aigrama.net - v2 Feature Release]]. Broken. You cannot [[link]] notes between two different vaults.
Global Search (Ctrl + Shift + F) Search once to find anything you ever wrote. You have to remember which vault you wrote it in and open multiple windows.
Daily Notes (01-Daily/) One Daily Note per day (2026-10-25.md) for class tasks, server bugs, and personal reminders. You would have 4 separate daily notes every single day.
Master To-Do List (Home.md) See all open tasks across University, Apps, and Personal life in one dashboard. Tasks are scattered across different vaults.
Templates & Plugins Set up your templates, shortcuts, and plugins once. You have to re-install and re-configure plugins in every vault.

How Do You Separate Subjects Inside 1 Vault?

Instead of making separate vaults, you separate subjects using MOCs (Maps of Content) inside 03-Areas/:

  • Want to focus on school? Open [[University MOC]].
  • Want to manage your deployed websites? Open [[Production Apps MOC]].
  • Want to study programming? Open [[Engineering MOC]].

The Only Exception: Only create a second vault if you use a company-owned work laptop with strict legal/NDA rules where employer data is not allowed to touch your personal GitHub repository.


3. Complete Vault Folder Structure (pan-knowledge)

Your vault uses a clean, minimal numbered folder layout so folders always stay in logical order:

pan-knowledge/
├── Home.md                  # 🏠 Your main starting dashboard (To-Dos, Bases, Links)
├── learn-obsidian.md        # 📖 This complete reference guide
├── 00-Inbox/                # 📥 Default location for brand-new notes (Ctrl + N)
├── 01-Daily/                # 📅 Daily notes (YYYY-MM-DD.md)
├── 02-Projects/             # 🎯 Active, deadline-driven projects & homework
│   └── Projects.base        # 📊 Live database table of Projects, Apps & Uni notes
├── 03-Areas/                # 🧭 Ongoing life & work hubs (never-ending responsibilities)
│   ├── University MOC.md
│   ├── CST 455 - Fall 2027.md
│   ├── CST 455 - Lecture 01.md
│   ├── Production Apps MOC.md
│   ├── aigrama.net.md
│   ├── bscofchicago.org.md
│   ├── Engineering MOC.md
│   └── Personal & Sensitive Info Guide.md
├── 04-Resources/            # 📚 Reusable atomic concept notes & how-to guides
│   └── Java 25 Structured Concurrency.md
├── 90-Templates/            # 📋 Reusable note templates
│   ├── Daily Note Template.md
│   ├── Course Lecture Template.md
│   ├── Prod App Runbook Template.md
│   ├── Project Template.md
│   └── Atomic Note Template.md
├── 98-Private-Local/        # 🔒 Private personal notes & credential pointers
└── 99-Attachments/          # 🖼️ Images, SVGs, PDFs, and diagrams

Difference Between 02-Projects/, 03-Areas/, and 04-Resources/

A junior user often asks: “Where does my note go?” Use this simple test:

  1. Does it have a deadline or a “Done” state? → Put it in 02-Projects/ (e.g., [[CST 455 - Lab 1 Setup]], [[aigrama.net - v2 Feature Release]]).
  2. Is it an ongoing responsibility with no end date? → Put it in 03-Areas/ (e.g., [[aigrama.net]], [[bscofchicago.org]], [[CST 455 - Fall 2027]], [[University MOC]]).
  3. Is it a reusable technical concept, tutorial, or reference? → Put it in 04-Resources/ (e.g., [[Java 25 Structured Concurrency]]).
  4. Not sure yet? → Leave it in 00-Inbox/! When you press Ctrl + N, Obsidian puts new notes in 00-Inbox/ automatically so you can write immediately and organize later.

4. Essential Obsidian Syntax (With Beginner Examples)

Wrap any note name in double square brackets [[...]] to create a link.

  • If the note already exists: Clicking the link opens that note.
  • If the note does NOT exist yet: The link appears slightly dimmed; clicking it creates the note automatically!
- Link to another note: [[aigrama.net]]
- Link with custom display text (Alias): [[CST 455 - Fall 2027|CST 455 Course]]
- Link to a specific heading inside a note: [[aigrama.net#1. Feature & Enhancement Backlog]]
- Link to a date (Daily Note): [[2026-10-26]]

B. Embedding Files, Images & Bases (![[Embeds]])

Put an exclamation mark ! in front of any [[link]] to display its contents inline inside the current note:

![[sample-architecture.svg]]
![[Projects.base]]
![[aigrama.net#1. Feature & Enhancement Backlog]]

C. Properties (YAML Frontmatter)

At the very top of a note, fenced between --- lines, are Properties (press Ctrl + ; to add a property). Properties act like database columns for your note and power Obsidian Bases:

---
created: "2026-10-25"
tags:
  - project
  - prod-app
status: active
due: 2026-11-15
---

D. Callout Boxes

Highlight important warnings, tips, or notes using > [!TYPE]:

> [!NOTE] Key Takeaway
> This renders as a clean blue info box.

> [!WARNING]- Click to Expand Warning
> Adding a minus sign `-` after `[!WARNING]` makes the box collapsible and folded by default!

E. Mermaid.js Diagrams

Obsidian renders flowcharts and sequence diagrams natively using mermaid code blocks:

```mermaid
flowchart LR
    User([User]) --> DNS[DNS: aigrama.net]
    DNS --> App[Backend Service]
    App --> DB[(Database)]
```

5. How to Use Templates to Create New Documents

Templates live in 90-Templates/. They save you from typing the same headings and properties every time you start a lecture, project, or app runbook.

Your 5 Ready-to-Use Templates

Template File Purpose Target Folder
[[Daily Note Template]] Automatically applied when you click the Calendar icon for today’s Daily Note 01-Daily/
[[Course Lecture Template]] Taking structured notes for a University lecture (e.g., CST 455) 03-Areas/
[[Prod App Runbook Template]] Documenting a live deployed app (architecture, runbook, feature backlog) 03-Areas/
[[Project Template]] Tracking a deadline-driven assignment or multi-day feature release 02-Projects/
[[Atomic Note Template]] Writing a reusable programming/engineering concept note 04-Resources/

Step-by-Step: Creating a New Note Using a Template (Example: CST 455 Lecture)

Creating a note from a link inside a parent hub guarantees your new note is immediately connected and never gets lost:

  1. Open the Course Hub: Press Ctrl + O, type CST 455 - Fall 2027, and press Enter.
  2. Type the Link for the New Lecture: Under ## Lectures, type:
    - [[CST 455 - Lecture 02]]
  3. Click the Link: Click [[CST 455 - Lecture 02]] (or press Alt + Enter on it). Obsidian creates the blank note and opens it.
  4. Insert the Template:
    • Press Ctrl + P to open the Command Palette.
    • Type Insert template (Templates: Insert template) and press Enter.
    • Select Course Lecture Template and press Enter.
  5. Auto-Filled Placeholders:
    • Obsidian automatically replaces {{title}} with CST 455 - Lecture 02 and {{date}} with today’s date (2026-10-25)!
  6. Move to 03-Areas/ (Optional):
    • Press Ctrl + P → type Move current file to another folder → select 03-Areas. (Obsidian updates all links automatically!)

Method 2: Set Up a 1-Key Shortcut (Alt + T) for Templates

To insert templates with a single keystroke instead of opening the Command Palette:

  1. Press Ctrl + , to open Settings.
  2. Click Hotkeys in the left menu.
  3. Search for Insert template.
  4. Click the + icon next to Templates: Insert template and press Alt + T.

6. Real-World Workflows: University, Production Apps & Sensitive Info

Workflow A: Managing University Work (CST 455 - Fall 2027)

  1. University Hub: Start at [[University MOC]] in 03-Areas/.
  2. Course Hub (03-Areas/): Create one hub note per course (e.g., [[CST 455 - Fall 2027]]). It holds the syllabus, schedule, and links to all lectures and labs.
  3. Lecture Notes (03-Areas/): Use [[Course Lecture Template]] for each class session (e.g., [[CST 455 - Lecture 01]]).
  4. Homework & Labs (02-Projects/): Because assignments have a strict due date, create them in 02-Projects/ using [[Project Template]] (e.g., [[CST 455 - Lab 1 Setup]]). Once graded, change status: active to status: completed.
  5. Core Concepts (04-Resources/): When you learn an important concept in class (like a sorting algorithm, SQL indexing, or [[Java 25 Structured Concurrency]]), create an atomic note in 04-Resources/ so you can reuse it in future classes and job interviews!

Workflow B: Managing Production Deployed Apps (aigrama.net & bscofchicago.org)

  1. Production Dashboard: Open [[Production Apps MOC]] in 03-Areas/.
  2. App Operations & Backlog Note (03-Areas/): Each live website has its own permanent note created from [[Prod App Runbook Template]]:
    • [[aigrama.net]]
    • [[bscofchicago.org]]
  3. How to Manage Feature & Enhancement Requests (The 2-Tier System):
    • Tier 1 — Small Tweaks, Bug Fixes & Backlog Ideas: Add them directly as checkboxes - [ ] inside [[aigrama.net]] or [[bscofchicago.org]] under ## 1. Feature & Enhancement Backlog (🔥 High Priority, 🛠️ Medium Priority, or 💡 Future Ideas) with an ETA date (📅 [[2026-11-01]]). When deployed, check the box [x] and move it to ✅ Completed Enhancements.
    • Tier 2 — Big Multi-Day Features / Releases: When a feature is too big for a single checkbox (requires new database tables, APIs, or several days of work), add a link under ## 2. Active Major Projects (02-Projects/) (e.g., [[aigrama.net - v2 Feature Release]]), click it, apply [[Project Template]], and place it in 02-Projects/.

Workflow C: Managing Personal & Sensitive Information Safely

Because Obsidian notes are plain-text .md files backed up to your Private GitHub Repository, follow the 3-Tier Security Model (see [[Personal & Sensitive Info Guide]]):

Security Tier What Belongs Here How to Store It Safely
Tier 1: Raw Secrets Passwords, PINs, .env API keys, DB passwords, SSH private keys (id_ed25519), crypto seed phrases NEVER put in plain-text Obsidian (even in a private GitHub repo). Store in Bitwarden, KeePassXC, or 1Password.
Tier 2: Credential Pointers Server IPs, domain renewal dates, DNS setup, and where the password is kept Use the Pointer Pattern in Obsidian: e.g., DB Password: Stored in KeePassXC -> Prod / aigrama.net.
Tier 3: Private Personal Notes Personal finance summaries, medical notes, private journals Place in 98-Private-Local/ (e.g., [[Personal Finance & Server Pointers (Sample)]]). For extra sensitive notes, encrypt them with the Meld Encrypt plugin (AES-256 password protection) before pushing to GitHub.

7. To-Do Lists & ETA Dates (📅 [[YYYY-MM-DD]])

Creating a To-Do Item with an ETA Date

  1. On any line in any note, press Ctrl + L to create a checkbox - [ ] .
  2. Write your task, link any relevant note ([[aigrama.net]]), and write the ETA date at the end using double square brackets [[YYYY-MM-DD]]:
    - [ ] Publish article and tutorial to [[aigrama.net]] and linkedin.com 📅 [[2026-10-26]]
  3. Press Ctrl + L again (or click the checkbox with your mouse) to mark it completed (- [x]).

Why Use [[2026-10-26]] (Square Brackets) Instead of {{2026-10-26}} (Curly Braces)?

  • Curly braces {{date}} are ONLY used inside template files in 90-Templates/. If you type {{2026-10-26}} in a normal note, Obsidian will not render it.
  • Square brackets [[2026-10-26]] turn the date into a clickable link that connects the task directly to that day’s Daily Note!

Seeing All Open To-Dos Across Your Entire Vault in Home.md

At the top of [[Home]], there is a live embedded search block:

```query
task-todo:"" -path:"90-Templates" -file:"Home.md" -file:"learn-obsidian.md"
```
  • This block automatically scans every folder in your vault (01-Daily/, 02-Projects/, 03-Areas/) and lists every unchecked - [ ] task alongside its ETA date.
  • You can click the checkboxes directly inside Home.md to complete them!

8. Obsidian Bases (.base) — Interactive Database Tables

What Is an Obsidian Base?

Obsidian Bases is a built-in Core Plugin that turns your notes and their top-of-file YAML Properties (status, due, url, course, tags) into an interactive, Notion-like spreadsheet table.

Why You Do NOT Need the Dataview Plugin Anymore

Previously, users had to install a third-party plugin called Dataview and write code queries. Obsidian Bases replaces Dataview and is much better for beginners:

  1. Two-Way Editable Cells: You can click directly on a project’s status or due date cell inside the table and change it—Obsidian automatically updates the YAML inside that note!
  2. Point-and-Click Filters & Sorting: Add columns, filter by folder/tag, and sort by due date using simple dropdown menus.
  3. 100% Built-In: Works out of the box on any computer without installing plugins.

Your Pre-Configured Projects.base Table

In [[Home]], we embedded ![[Projects.base]] (located at 02-Projects/Projects.base), which has 3 built-in views you can switch between using the dropdown at the top-left of the table:

  1. Active Projects: Lists all projects in 02-Projects/ with columns for status, due (ETA), tags, and created.
  2. Production Apps: Lists [[aigrama.net]] and [[bscofchicago.org]] with their status and url.
  3. University Notes: Lists all #university notes with course and semester.

9. Must-Have Plugins (And Why You Don’t Need Dataview)

A. Built-In Core Plugins (Already Enabled in Your Vault)

Found under Settings (Ctrl + ,) → Core plugins:

  • Bases: Powers .base interactive database tables (Projects.base).
  • Daily Notes: Opens/creates 01-Daily/YYYY-MM-DD.md using Daily Note Template when you click the Calendar icon on the left vertical ribbon.
  • Templates: Inserts templates from 90-Templates/.
  • Backlinks & Outgoing Links: Shows all notes linking to and from your current note in the right sidebar.
  • Graph View: Visualizes how all your notes connect (Ctrl + G).

Found under Settings (Ctrl + ,) → Community plugins → Browse:

Plugin Name What It Does & Why It’s Recommended
1. Tasks (Clare Macrae) Adds a popup calendar date picker whenever you create or edit a - [ ] task (Ctrl + P → Tasks: Create or edit task), plus recurring tasks (🔁 every week) and priority sorting.
2. Git (Vinzent03) Adds a Git sidebar window and automatically commits and pushes your vault changes to your private GitHub repository on a schedule.
3. Templater (SilentVoid13) Lets you set Folder Templates so right-clicking a folder (like 01-Daily or 02-Projects) and clicking “New note” automatically applies that folder’s template.
4. Excalidraw (Zsolt Viczian) Full hand-drawn whiteboard and architecture diagramming tool inside Obsidian.
5. Calendar (Liam Cain) Adds a clickable monthly calendar in your right sidebar to jump to any day’s Daily Note.
6. Meld Encrypt (Bruceammer) Lets you password-protect sensitive notes or text blocks with AES-256 encryption before pushing to GitHub.

10. Using Obsidian Across Multiple Computers with Git

Because your vault is backed up to a private GitHub repository, you can git clone or git pull your vault onto any second computer (Linux, Mac, or Windows).

What Works Automatically on a 2nd Computer (Even Without Plugins)?

Because your vault uses standard Markdown and built-in Obsidian features:

  • 100% of your notes, folders, and [[WikiLinks]] work immediately.
  • Your To-Do checkboxes and the live To-Do query on Home.md work immediately.
  • Your Projects.base database tables work immediately.
  • Your Mermaid diagrams and SVG images work immediately.

Why .obsidian/ Is Ignored in .gitignore

We added .obsidian/ to .gitignore so that machine-specific files (workspace.json, types.json, and megabytes of downloaded plugin main.js / styles.css files) do not clutter your Git commits or cause merge conflicts between two computers.

  • When setting up a brand-new second computer for the first time, simply open Obsidian Settings → Community plugins and click Install on Tasks and Git (takes 30 seconds).

11. Troubleshooting FAQ (Real Problems & Exact Fixes)

Problem 1: “I right-clicked on the 01-Daily folder and clicked ‘New note’, why didn’t Daily Note Template apply?”

  • Why it happens: In vanilla Obsidian, right-clicking a folder → “New note” creates a generic blank note (Untitled.md). It does not trigger the Daily Notes plugin.
  • Fix A (1-Click Daily Note): Instead of right-clicking 01-Daily, click the Calendar icon (“Open today’s daily note”) on the narrow left vertical ribbon (or press Ctrl + P → Daily notes: Open today's daily note). Obsidian will automatically create 01-Daily/YYYY-MM-DD.md and apply Daily Note Template!
  • Fix B (Manual Template Insert): If you ever create a blank note via right-click → “New note”, press Alt + T (or Ctrl + P → Templates: Insert template) and pick your template.
  • Fix C (Auto-Apply on Folder Right-Click): In Settings → Templater → Folder Templates, map 01-Daily to 90-Templates/Daily Note Template.md and enable “Trigger Templater on new file creation”.

Problem 2: “I pressed Ctrl + L and typed - [ ] my task {{2026-10-26}}, why didn’t the date render?”

  • Why it happens: Double curly braces {{date}} only work as placeholders inside template files in 90-Templates/. In regular notes, {{...}} does nothing.
  • The Fix:
    1. Write dates using double square brackets instead: 📅 [[2026-10-26]]. That renders as a clickable link to 2026-10-26!
    2. Or, with the Tasks plugin enabled, press Ctrl + P → Tasks: Create or edit task while your cursor is on the - [ ] line to pick the ETA date from an interactive popup calendar.

Problem 3: “Why does the Obsidian Git plugin window show main.js, styles.css, types.json, and workspace.json when git status in the terminal didn’t?”

  • Why it happens:
    1. Installing community plugins downloads compiled main.js and styles.css files into .obsidian/plugins/. Standard git status in the terminal collapses untracked folders, whereas the Obsidian Git plugin runs git status -uall (showing every file inside .obsidian/).
    2. If .obsidian/workspace.json was committed in an earlier Git commit before .gitignore was added, Git continues tracking it even after you add it to .gitignore.
  • The Fix (Already Applied in Your Vault):
    1. Put .obsidian/ inside .gitignore.
    2. If any .obsidian/ files were previously committed, run this command once in your vault terminal so Git stops watching them:
      cd /home/pankaj/Pan-Dev/pan-knowledge
      git ls-files .obsidian/ | xargs -r git update-index --skip-worktree

Problem 4: “Can I push 98-Private-Local/ to GitHub if my repository is Private?”

  • Answer: Yes, 98-Private-Local/ is tracked and pushed to your private GitHub repo so your personal notes are backed up.
  • Golden Security Rule: Even in a private GitHub repo, never store raw passwords, .env secrets, or SSH private keys in plain text. Store raw passwords in Bitwarden/KeePassXC (and write only pointers in Obsidian), or encrypt sensitive notes using the Meld Encrypt plugin before pushing.

12. Keyboard Shortcuts Cheat Sheet

Action Shortcut (Linux / Windows) What It Does
Create New Note Ctrl + N Creates a new note inside 00-Inbox/
Toggle To-Do Checkbox Ctrl + L Turns any line into - [ ] or checks it off - [x]
Command Palette Ctrl + P Search and run any command in Obsidian
Quick Switcher Ctrl + O Quickly open or create any note by typing its name
Insert Template Alt + T (set in Hotkeys) Inserts a template from 90-Templates/ into the current note
Global Search Ctrl + Shift + F Search for text or tags across all notes in your vault
Toggle Edit / Preview Ctrl + E Switches between Live Editing view and Reading view
Add YAML Property Ctrl + ; Adds a metadata property (status, due, tags) at top of note
Open Graph View Ctrl + G Opens the visual network map of all linked notes
Navigate Back / Forward Alt + Left / Alt + Right Jump back to the previous note you were viewing
Open Settings Ctrl + , Opens Obsidian Settings (Plugins, Hotkeys, Appearance)
Enjoyed this article?

Subscribe & Follow

Get notified of new technical articles on AI/ML, Java, Python, and system architecture.