BushelBushel - Personal knowledge base and research entry management
Bushel is a library for managing structured research entries including notes, papers, projects, ideas, videos, and contacts. It provides typed access to markdown files with YAML frontmatter and supports link graphs, markdown processing with custom extensions, and search integration.
Note - Blog posts and research notesPaper - Academic papers with BibTeX metadataProject - Research projectsIdea - Research ideas/proposalsVideo - Talk videos and recordingsEntry - Union type for all entry types with common operationsTags - Tag parsing and filteringMd - Markdown processing with Bushel link extensionsLink_graph - Bidirectional link tracking between entries (* Load entries using bushel-eio *)
let entries = Bushel_loader.load fs "/path/to/data" in
(* Look up entries by slug *)
match Bushel.Entry.lookup entries "my-note" with
| Some (`Note n) -> Printf.printf "Title: %s\n" (Bushel.Note.title n)
| _ -> ()
(* Get backlinks *)
let backlinks = Bushel.Link_graph.get_backlinks_for_slug "my-note" in
List.iter print_endline backlinksmodule Note : sig ... endBlog post and research note entries.
module Paper : sig ... endAcademic paper entries with BibTeX-style metadata.
module Project : sig ... endResearch project entries.
module Idea : sig ... endResearch idea/proposal entries.
module Video : sig ... endVideo/talk recording entries.
module Entry : sig ... endUnion type for all entry types with common accessors.
module Tags : sig ... endTag parsing, filtering, and counting.
module Md : sig ... endMarkdown processing with Bushel link extensions.
module Link : sig ... endExternal link tracking and merging.
module Link_graph : sig ... endBidirectional link graph for entry relationships.
module Description : sig ... endGenerate descriptive text for entries.
module Types : sig ... endCommon types and Jsont codecs.
module Doi_entry : sig ... endDOI entries resolved from external sources.
module Reference : sig ... endStructured reference types for citations.
module Util : sig ... endUtility functions (word counting, text processing).
module Lint : sig ... endLint checks for broken references, unknown fields, and missing content.