Skip to content

Instantly share code, notes, and snippets.

@JS-Zheng
Created December 1, 2024 17:06
Show Gist options
  • Save JS-Zheng/6d5fb26e1af52cd753f00ec3df54d133 to your computer and use it in GitHub Desktop.
Save JS-Zheng/6d5fb26e1af52cd753f00ec3df54d133 to your computer and use it in GitHub Desktop.
VRC (View for Role-Category) System: A Flexible Note-Taking

VRC (View for Role-Category) System

The VRC System (View for Role-Category) is a personal knowledge management framework designed to help you organize and view notes dynamically. It focuses on structuring notes by ==Role== and ==Category==, allowing for flexibility, clarity, and efficient retrieval through ==Dataview== queries.

Table of Contents

Introduction

The VRC System is structured around two primary levels:

  1. Role: Defines the context or identity in which a note is created (e.g., Developer, Gourmet).
  2. Category: Organizes notes within each role based on their source or nature (e.g., Books, Snippets, Series).

Each role includes a special Views folder that leverages Obsidian’s Dataview plugin to dynamically query and display notes across categories. This enables users to retrieve notes on specific topics (e.g., C++) regardless of their assigned category.


Core Concepts

Roles

  • Roles represent the "persona" or context in which a note is created.
  • Examples include:
    • Self: Personal reflections, experiences, and interests.
    • Developer: Notes related to software development and programming.
    • Musician: Notes for music creation, practice, and performances.
    • Hero: Notes for parenting, family activities, and child education.
    • Void: Notes representing undefined, abstract, or contemplative states, often used for capturing unstructured ideas or inspirations.

Categories

  • Categories represent the source or nature of notes within each role. Typical categories include:
    • Books: Notes and insights from books.
    • Series: Notes from structured series (e.g., tutorials).
    • Snippets: General learning notes, thoughts, or ideas.
    • Classes: Notes from courses or structured classes.
    • Journal: Personal journal entries.
    • Rehearsals: Notes on practice plans and progress.
    • Contemplations: Reflections or meditative ideas.
    • Clippings: Extracted information or web highlights.
    • Inspirations: Early-stage ideas or creative sparks.
  • Each category helps in organizing notes based on origin and usage within the broader context of each role.

Views

  • Views folders use Dataview queries to display notes dynamically based on specific topics or tags, allowing users to cross-reference notes across categories.
  • Example: A C++ view under Developer/Views can gather notes tagged or titled with "C++" from Books, Series, Snippets, etc.

Folder Structure

The folder structure is as follows:

├── Self/
│   ├── Animation/
│   ├── Journal/
│   ├── Movies/
│   ├── Music/
│   └── Views/
├── Developer/
│   ├── Books/
│   ├── Classes/
│   ├── Competitive Programming/
│   ├── Series/
│   ├── Snippets/
│   └── Views/
├── Musician/
│   ├── Songwriting/
│   ├── Rehearsals/
│   ├── Guitar Licks/
│   ├── Performances/
│   └── Views/
├── Hero/
│   ├── Activities/
│   ├── Books/
│   ├── Parenting Tips/
│   └── Views/
├── Void/
│   ├── Contemplations/
│   ├── Clippings/
│   ├── Inspirations/
│   └── Views/

How to Use

  1. Organize by Role: Assign notes to the corresponding Role folder. For example, programming notes go under Developer, while journal entries go under Self.
  2. Categorize by Source/Nature: Within each role, classify notes by category. A book note on programming would go under Developer/Books, while a course note goes under Developer/Classes.
  3. Create Tags or Metadata: Add relevant tags or metadata (e.g., tags: [C++]) to each note for easier filtering and querying.
  4. Access through Views: Use Dataview queries within the Views folders to aggregate notes on specific topics, regardless of their category.

Setting Up Views with Dataview

The Views folder allows you to create dynamic views for each role using the Dataview plugin.

Example Dataview Query

To display all notes tagged with C++ across Developer categories:

table title as "Title", category as "Category", file.mtime as "Last Modified"
from "Developer"
where contains(tags, "C++")
sort file.mtime desc

This query gathers all notes tagged with C++ from Developer categories, making it easy to review related content in one place.

Best Practices

  1. Consistent Tagging: Use consistent tagging (e.g., C++, Python) for accurate Dataview queries.
  2. Standardized Metadata: Include standardized metadata fields (e.g., tags, category, role) in notes for better organization and filtering.
  3. Regularly Update Views: Periodically update and refine Views to reflect evolving interests and topics.
  4. Expand Roles and Categories: Add new roles or categories as your note-taking needs grow.
  5. Review and Reassign Notes:
    • Use Void as a temporary space for initial ideas or undefined notes.
    • Regularly review Void notes and move mature content into specific roles and categories. For example:
      • A musical idea from Void/Inspirations can move to Musician/Songwriting.
      • A technical snippet from Void/Clippings can move to Developer/Snippets.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment