Organization of Gnosis (Knowledge) for GNU Emacs

Org Gnosis a a minimal org-mode parsing tool that organizes the data of your notes as atomic nodes in an sqlite database.

GNU ELPA

About

org-gnosis can be used as a drop-in replacement for org-roam

Org Gnosis With UI

org-gnosis node & org-gnosis-ui

Each heading with an ID is treated as an atomic note (node), storing it’s metadata in an relation database to facilitate efficient linking & searching.

Special functionality for journaling with journal entries in a separated directory & customizable templates is also available.

Installation

Recommended use-package example:

(use-package org-gnosis
    :ensure t
    :init
    ;; Example for separated journaling & notes keymap
    (define-prefix-command 'my/notes-map)
    (define-prefix-command 'my/journal-map)
    :config
    ;; Common settings you might want to tweak to your liking
    (setf org-gnosis-dir "~/Notes"
  	;; Whe non-nil, create notes as gpg encrypted files
  	org-gnosis-create-as-gpg nil
  	;; TODO files, commonly used for templates.
  	org-gnosis-todo-files org-agenda-files
  	;; Used in #'org-gnosis-todos for template generation
  	org-gnosis-bullet-point-char "+"
  	;; Default completing-read function
  	org-gnosis-completing-read-func #'org-completing-read
  	;; Recommended if you use a vertical completion system (e.g vertico)
  	org-gnosis-show-tags t)

    (defun example/org-gnosis-book-template ()
      (let ((date (format-time-string "%Y-%m-%d"))
  	  (book-title (completing-read
  		     "Example book: "
  		     '("Free Software, Free Society" "How to Take Smart Notes"))))
        (format "#+DATE: %s \n#+BOOK_TITLE: %s\n\n* Main Idea\n* Key Points\n* Own Thoughts"
  	      date book-title)))

    (add-to-list 'org-gnosis-node-templates
  	       '("Book Example" example/org-gnosis-book-template))
    :bind (("C-c n" . thanos/notes-map)
  	 ("C-c n j" . thanos/journal-map)
  	 :map thanos/notes-map
  	 ("f" . org-gnosis-find)
  	 ("i" . org-gnosis-insert)
  	 ("t" . org-gnosis-find-by-tag)
  	 :map thanos/journal-map
  	 ("j" . org-gnosis-journal)
  	 ("f" . org-gnosis-journal-find)
  	 ("i" . org-gnosis-journal-insert)
  	 :map org-mode-map
  	 ("C-c C-." . org-gnosis-insert-tag)
  	 ("C-c i" . org-id-get-create)))

If you already have a note collection, run M-x org-gnosis-db-sync to sync your notes with org-gnosis.