Warning: Experimental, proof-of-concept. Here be dragons!
Writing does not make intellectual endeavours easier, it makes them possible. Deepen understanding, insight, and allow for structure to emerge organically by linking notes.
Completely free for personal and business use. Open Source (MIT Licensed).
At a glance
Notesium is essentially an indexer for bi-directional linked notes, designed around a few core principles. But it offers so much more...
Use the local web interface or integrate with Vim to enhance your existing workflow
Whether you prefer graphical interfaces or text-based environments, Notesium adapts to your preferred tools and methods. Beyond that, leverage the powerful low-level CLI and API interfaces for custom integrations.
Highlight, Search and Track. Emphasize nodes and their links using the search filter or clicking a node. The fullscreen view supports note preview, where as the panel view automatically tracks the active note and auto-updates, helping you maintain context and relevance.
Dynamic Viewing. Adjust node sizes dynamically based on bi-directional link counts, toggle title visibility, and automatically scale elements according to zoom level. Tweak forces like repel force, collide radius, and strength to refine the layout, as well as drag, pan, or zoom the graph for optimal viewing.
Connect your notes, just type [[
Effortlessly connect notes as you type with automatically formatted and clickable links. Explore which notes link to the current note (aka. incoming or backlinks) with the finder or side panels.
The editor is configured to syntax highlight based on markdown formatting. By default, special characters such as those used for bold, italic and code will be concealed except on the active-line. In addition, links will also be concealed and only display the title. This setting can be toggled.
The editor supports section folding, making it easier to view and edit notes, especially longer ones. Folds can be toggled by clicking a chevron in the Fold gutter or using the C-Enter keybinding. In Vim mode, folding is enhanced with keybindings za, zo, zc, zR, and zM.
The editor will recognize when the cursor is placed within a table structure (identified by lines starting with the pipe character), and provides automatic table formatting, column alignment and dynamic adjustment, concealment support as well as navigation keybindings.
The editor supports Vim mode, emulating key features of Vim such as motions, operators, visual modes, macro support, incremental highlighted search, search and replace, jump lists, sort, marks, cross-buffer yank/paste, and expected commands for writing, quitting, and adjusting editor settings. It also supports link insertion, link following, and passthrough for Notesium's global and note-tab keybindings.
Filenames are 8 hexidecimal digits, and deterministic
When storing notes as files, naming is challenging. Common conventions include using the note title, current timestamp, or both in concatenated form.
However, notes often evolve, making it hard to choose a good title upfront, which can lead to cognitive overload, as well as considerations for potential future collisions. If a better title is found or the note’s context changes later, renaming the file risks breaking existing links. Using timestamps might seem ideal, but depending on the format, it can result in long filenames and risk collisions due to timezones and daylight saving.
Notesium addresses this by using the UNIX epoch time, further encoding it in hexadecimal, resulting in 8 characters for the identifier and appending the .md suffix. The timestamp can easily be decoded and formatted, and the suffix ensures compatibility with other tools while limiting file processing.
There are only two hard things in Computer Science: cache invalidation and naming things. ~ Phil Karlton
Completely flat directory structure
It is better to prefer associative ontologies to hierarchical taxonomies.
Folders are often thought of as categories, but notes don't always fit neatly into just one category, which could result in decision paralysis when creating a new note, and can prematurely constrain what may emerge.
Links would also be broken when renaming a folder or moving a note from one folder to another.
Notesium assumes a flat directory structure, having all notes be siblings to one another, in one folder. Utilizing bi-directional links allows for the structure to emerge over time. Additionally, the label convention allows for a meta-hierarchical taxonomy to be created which can be useful in certain circumstances.
Titles are inferred from the first line
Note titles are like APIs, and when titled well they become an abstraction. Notesium assumes note titles are on the first line of the note.
One-word titles are considered labels
Even though tags are an ineffective association structure, Notesium supports the concept of labels, but there is no special label syntax. Instead, a label is just a regular note, and only considered a label if its title is one-word.
This essentially supports creating a meta-hierarchical taxonomy which can be searched, filtered and sorted. Additionally, the Web UI includes a dedicated label panel and label-tree providing a visual representation.
Links are inline
Notes should be densely linked, allowing for structure to emerge organically, and may even help you see unexpected connections which may surprise you.
Notesium assumes note links use the inline markdown syntax. This makes it easier to parse, and simple to insert links inline while typing.
Even though links are short, for an improved reading experience in Vim consider enabling conceallevel
. This is implemented in the embedded web editor and enabled by default.
Notesium itself does not directly support periodic notes, instead the embedded Web app and Vim integration support daily and weekly notes using a creation-time convention (00:00:00 for daily and 00:00:01 on the first day of the week for weekly).
This convention results in deterministic, unique filenames, enabling instant identification of a specific periodic note, without the need for manual organization or special formatting - eliminating overhead and the need to search the entire notes folder for keywords or regular expressions. Additionally, past and future periodic notes can also be created using this convention while retaining chronological order.
* These metrics are from a specific setup; actual performance may vary based on system configuration and usage.
And so much more
Notesium is packed with features that reveal themselves as you use it, and it becomes exponentially more powerful and useful the more data you feed it.