🎒 : amble
truly programmable notes
⦿ Robust Knowledge Management
Amble combines ideas from knowledge management systems like Notion, Obsidian, and Roam Research with a fast pattern matching/querying system.
Amble is not an electron app, not a web app, and not even a GUI application.
Instead, Amble is provided as a cross-platform shared library written in Rust for doing pattern matching, modifying, and querying the contents of your notes.
The core of Amble is designed to be extremely simple to install and interface with, allowing users to build their own wrappers around the core library.
We aim to provide a few official wrappers for Amble, including a Neovim interface, a CLI interface, and a web interface.
⦿ Highly Modular
The magic of the querying and pattern matching facilities of Amble happens on an intermediate representation of your notes called AIR (Amble Intermediate Representation).
While Amble aims to offer first class support for an Org-like syntax for your notes, the core of Amble is syntax independent. This means Amble can integrate information from JSON, Markdown, XML, even the comments in your codebase, provided a parser is provided to convert that information into AIR.
⦿ Not Just Notes
Amble stores your notes in what we call a backpack.
The text content of your notes is stored inside a SQLite database. This SQLIte database exists in an archived directory alongside files that you want your notes to link to. These might include images, PDFs, videos, etc.
Amble aims to provide a rich link system in all of its official client side wrappers. Allowing you to quickly jump between your notes, your PDFs, your books, and your codebases.
⦿ Syntax Crash Course
// Take notes in plain text in an
// org mode inspired syntax
⦿ TODO Update meeting invite
:due: 10/25/24
:project: Amble
Link to invite
⦿ Client meeting
:date: 10/10/24
pattern matcher is awesome
more work is needed in fleshing out lisp integration
it's awesome that you can use amble
natively in neovim
✹ TODO Scope pattern matcher changes
:project: Amble
✹ TODO Deploy new version
:project: Amble
// Leverage powerful pattern matching using FOLDS
// directly in your notes to collect and organize
// everything you need to remember
// Let's organize all our TODO items for
// the Amble project into one place
⦿ FOLD Amble Todos
// In the FROM clause we define what we want to find in our notes.
// "" denotes a literal, the item in our notes must
// have this text at this position to satisfy the pattern.
// No "" means we capture whatever text
// we find at this position into that variable name
✹ FROM
⦾ "TODO" todo-title
:project: "Amble"
// In the INTO clause we define how to generate new
// text for each node in our notes that matched the pattern.
// "" means we always write this text at this position
// no "" means we write whatever was captured into that variable name.
// Editing an item generated from a FOLD
// also modifies that item's source.
// Give it a try by editing one of the pieces of text below
// and scrolling up to see the change