Shelf is (my latest attempt at) a highly flexible notes aggregation, management, archival, and analysis tool. It provides parallel APIs using Python scripting and an efficient command line interface. The former allows for effortless extensibility and cooperation with your existing infrastructure, and the latter for ease of use and efficiency.
Features that have been implemented, are currently under development, or are planned (status is indicated with a checkbox). Note that some of these are tentative and may not appear in future versions.
- Create, edit, and delete notes
- Interactive support for rapidly recording notes with abbreviations, shorthand, etc. (e.g., when taking lecture notes)
- Organize using a flexible tagging/categorization system (and optional hierarchical organization)
- Customizable workflows that don't force you to change the way you process information; shelf works with you
- Search for notes using regular expressions, fuzzy matching, etc.
- Automatic aggregation, syncing, and versioning of notes from various sources
- Visualizations of the relationships between notes, terms, tags, and more
- Efficient tools for manual and/or semi-automated ranking and sorting of notes according to various criteria
- Fully featured Python scripting API
- Export notes to Markdown and other human-readable formats using customizable templates
- Generate statistics from sets of notes
- Automatically maintain your notes library with custom scripts and actions
- High backwards-compatibility and longevity; all pertinent metadata is stored so that properties can be re-computed at any point in time
- Fast and space-efficient (optionally) compressed backups (support for local and/or remote backups)
- Transparent and sensible data storage - everything shelf records goes to the same place
- Memoized search and processing utilizing dynamic programming techniques; the end result is extremely fast operations, even on massive libraries (benchmarks of various operations on libraries of different sizes are planned)
- Execute dry runs to preview an operation's effects without modifying any data
Download or clone this repository; you may wish to also install the module locally using the pip package manager if you plan to take advantage of the scripting interface (alternatively, a local/relative import statement can be used if your script is placed in the same directory as the cloned repository).