Skip to content

realjockel/noorg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

banner

Website 🚀 Docs ✍️

⚠️ Currently only buildable on MacOS and Linux, still experimental

Capture everything, organize nothing.

Noorg is not just another note-taking tool—it's an editor-agnostic platform designed to integrate seamlessly with any text editor you prefer. Whether you're a fan of Vim, Emacs, VSCode, Obsidian or any other editor, Noorg empowers you to focus on what truly matters: capturing your thoughts and ideas without the burden of organization.

A New Paradigm in Note Management

For those of us who struggle with organization, and dedicate too much time into creating the perfect system and note structure, Noorg offers a liberating approach. It shifts the focus from organizing to capturing thoughts and ideas effortlessly. By leveraging the power of Markdown and its frontmatter capabilities, Noorg allows you to annotate your notes with metadata, making them easily searchable and sortable without the need for manual organization.

But that's not all, Noorg is also a runtime that allows you to extend its functionality using Python, Lua, and Rust. This flexibility means you can tailor Noorg to fit unlimited use cases, from simple note-taking to complex data processing tasks.

Extensible Runtime

At its core, Noorg is a highly extensible runtime, allowing you to enhance its capabilities using Python , Lua , and Rust. This flexibility means you can tailor Noorg to fit unlimited use cases, from simple note-taking to complex data processing tasks.

Observer Pattern

Noorg employs the observer pattern to provide dynamic, real-time processing of your notes. Current observers, such as the time tracker and inline tags, are just examples of what's possible. These observers automatically process your notes, adding context and metadata without interrupting your flow. Imagine a daily journal that compiles all notes created on a specific day, or a system that tags notes based on content—these are just a few possibilities.

Use Cases

  • Journal Creation: Automatically compile a daily journal from notes created throughout the day.
  • Time Tracking: Integrate time tracking to monitor how much time you spend on different topics.
  • Tagging System: Use inline tags to categorize notes on-the-fly and to create dynamic views.
  • Dynamic Views: Create dynamic views utilizing SQL to filter, sort and display your notes. (Comparable to Obsidian's Dataview plugin)
  • Kanban Board: Create a kanban board to visualize your notes and tasks.
  • Custom Processing: Use Python, Lua or Rust to process your notes and add custom metadata.
  • Lua executor: Execute Lua inside your notes.
  • Unlimited Possibilities: The possibilities are endless. You could build a system to automatically transcribe your notes, built presentations, call external APIs, integrate LLMs, and more.

Caution: Pre-Alpha Software

Noorg is currently in a pre-alpha stage. While it offers powerful features, it is still under active development and may not be stable. We strongly advise starting slowly and backing up your note directory regularly. Experiment with Noorg in a safe environment to discover its potential without risking your important data.

Join the Community

Noorg is for those minds, who want to break free from the constraints of traditional note-taking systems. It's editor agnostic, offline first, free, open source, community driven, and extensible. It's for thos who want to capture their thoughts, and not built the perfect organization system. Join the community in redefining how we manage our knowledge. Start using, contributing and building.

Features

  • Editor agnostic
  • Runs as a system tray application which "watches" your note directory and automatically processes your notes
  • Offline first, no cloud dependencies
  • Extensible with Python, Lua and Rust
  • SQL based dynamic views
  • Kanban board
  • Time tracker
  • Inline tag detection and creation of Tag index
  • Lua executor to execute Lua inside your notes

Installation

Prerequisites

macOS

  1. Install Rust and Cargo:
# macOS
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  1. Install Python dependencies:
brew install [email protected]

# Add to ~/.zshrc or ~/.bashrc
export PYTHON_CONFIGURE_OPTS="--enable-framework"
export PYO3_PYTHON="/opt/homebrew/opt/[email protected]/bin/python3.9"
  1. Install Lua
brew install lua # macOS

# find lua path
lua -e "print(package.path:match('([^;]+)/?.lua'))"

# download json.lua dependency
curl -O https://raw.githubusercontent.com/rxi/json.lua/master/json.lua

# macOS: Copy to Lua package path
sudo cp json.lua /opt/homebrew/share/lua/5.4/json.lua

# Verify installation
lua -e "require('json')"

Linux

  1. Install Rust and Cargo:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  1. Install Python Dependencies:
add-apt-repository ppa:deadsnakes/ppa
sudo apt-get install -y python3.9 python3.9-distutils python3.9-venv
sudo apt-get install -y python3.12-dev
  1. Install Lua Depenedncies
sudo apt-get install -y lua5.4 liblua5.4-dev liblua5.1-0-dev
curl -O https://raw.githubusercontent.com/rxi/json.lua/master/json.lua
sudo mkdir /usr/local/share/lua/5.4/ -p
sudo cp json.lua /usr/local/share/lua/5.4/json.lua
  1. Install additionl dependencies
sudo apt-get install -y libxdo-dev libsqlite3-dev libssl-dev libglib2.0-dev libgirepository1.0-dev gcc g++ clang libgtk-3-dev

Option Build from Source

# Clone repository
git clone https://github.com/realjockel/noorg.git
cd noorg

# Build and install
cargo install --path .

# Build release binaries
cargo build --release

Install Script (prefered)

./install.sh

Uninstall with:

./install.sh uninstall

Usage

CLI Commands

Run noorg system tray application.

noorg

⚠️ Note: The system tray application displays but doesn't work on Linux so far. Therefore, use the note_cli tool with the following command

noorg note_cli watch

Run noorg note_cli to use the command line interface.

noorg note_cli

Run noorg watch to watch your note directory and automatically process your notes.

noorg note_cli watch

Run noorg note_cli sync to run all observers on all notes in your note directory.

noorg note_cli sync

Add a note:

noorg note_cli add --title "My Note" --body "Content" --frontmatter "tags:rust"

# Or without body (will open editor defined as EDITOR env variable to edit note)
noorg note_cli add --title "My Note" --frontmatter "tags:rust"

# Or with multiple frontmatter fields
noorg note_cli add -t "Rust Notes" -b "Discussed lifetimes" -f "priority:high" -f "project:X"

System Tray Application

The system tray application provides quick access to:

  • Note creation
  • Settings
  • Starting a watch to automatically process your notes on change

Configuration

The configuration file (config.toml) is automatically created in the following location:

Config Location

  • macOS: ~/Library/Application Support/norg/config.toml

Data Directory

Application data is stored in:

  • macOS: ~/Library/Application Support/norg/

Development Roadmap

  • Fix query and list cli commands
  • Add more tests
  • Add more examples
  • fix similar notes observer (RAG)

License

This project is licensed under Apache 2.0. See the LICENSE file for details.

About

Capture everything, organize nothing

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published