/verzettler

Non-linear, non-hierarchical knowledge management: Helper scripts for your Zettelkasten.

Primary LanguagePythonMIT LicenseMIT

Verzettler

All Contributors

experimental gh actions pre-commit.ci status Black License PR welcome

This project is more of an easy to hack experimental playground than a finished product

I'm using parts of it on a regular basis, and you probably will find some helpful tooling there as well. But it's not a coherent polished package. If you have come cool additions or suggestions, I'm all ears though.

Non-linear, non-hierarchical knowledge management

Knowledge management is about storing information in a way that makes sense to you. The canonical approach is linear and hierarchical in nature: You start with a simple text document. The more information you add, the longer it grows, eventually becoming hard to manage. If your knowledge falls into some disjoint categories, you might have several different documents in different folders, but eventually it will be very hard to figure out the right place for pieces of information as the structure becomes ever more complex.

The Zettelkasten (German for slipbox) method is a radical departure from this: Notes are limit to a single thought or information with very high cohesion and rather than imposing a linear or hierarchical structure, these notes are linked together. Pretty much what makes the WWW scale so well ;)

But let me refer you to other people for the big words. I really enjoyed this article about Niklas Luhman, a German Sociologist of the 20th century who built up an analogue knowledge management system made from thousands of small notes.

Notable existing software solutions

Name Open source? Description
roamresearch No
org-roam Yes Plugin for emacs
org-brain Yes Plugin for emacs
logseq Soon (?) In-browser
zettlr Yes Electron based app
obsidian No Electron based app

And certainly many more (feel free to open a PR to add your favorite piece of software)!

The tools in this repository

This repository contains a selection of different tools to help you manage your own Zettelkasten, which are kept as Markdown files in a way that Zettlr and others understand them.

Among these are

  • Tools to make bulk operations on your notes. E.g. to introduce backlinks (a section at the end of each note where all notes that link to the note are linked)
  • Tools to convert your notes to other formats.
  • A local web server to browse through your notes through your web server. Experimental support to edit your notes directly in your webbrowser was recently implemented as well.
  • Tools to analyze the graph structure of your Zettelkasten.

Eventually this project might converge to a browser based tool to fully manage your notes directly from the webbrowser while keeping support for other external editors, but currently it's still bits and pieces.

Selected features

The webserver

  • The webserver shows a smart portion of the graph of neighboring nodes for each note:

note environment graph

  • It also has a fancy dashboard that shows some statistics about the distribution of notes:

dashboard

  • Shortcut buttons to open the note in an external editor (like typora)
  • Edit note in browser (alpha)

Installation

Verzettler needs python >= 3.7. You can install this project using

pip3 install .

Please also make sure that you have the pandoc package installed (not with pip but with your usual package manager/installer).

Development installation

Please install the pre-commit hooks and tools for testing

pip3 install pre-commit pytest pytest-cov
cd verzettler
pre-commit install

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Pablo2m

💻 🐛 🤔

Kilian Lieret

💻 🤔 🚧 👀

This project follows the all-contributors specification. Contributions of any kind welcome!