Module Bushel

Bushel - 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.

Entry Types

Core Modules

Quick Start

  (* 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 backlinks

Entry Types

module Note : sig ... end

Blog post and research note entries.

module Paper : sig ... end

Academic paper entries with BibTeX-style metadata.

module Project : sig ... end

Research project entries.

module Idea : sig ... end

Research idea/proposal entries.

module Video : sig ... end

Video/talk recording entries.

Core Modules

module Entry : sig ... end

Union type for all entry types with common accessors.

module Tags : sig ... end

Tag parsing, filtering, and counting.

module Md : sig ... end

Markdown processing with Bushel link extensions.

External link tracking and merging.

Bidirectional link graph for entry relationships.

module Description : sig ... end

Generate descriptive text for entries.

Utilities

module Types : sig ... end

Common types and Jsont codecs.

module Doi_entry : sig ... end

DOI entries resolved from external sources.

module Reference : sig ... end

Structured reference types for citations.

module Util : sig ... end

Utility functions (word counting, text processing).

module Lint : sig ... end

Lint checks for broken references, unknown fields, and missing content.