fond-store 0.3.0

SQLite persistence, migrations, and FTS5 search for fond recipe manager
Documentation

fond-store

SQLite persistence, migrations, and FTS5 search for fond — a local-first, CLI-first personal cooking & recipe manager.

The database is a derived index.cook recipe files on disk are the source of truth, and fond reindex rebuilds the DB from those files. The database is disposable; the files are sacred.

Features

  • FTS5 full-text search across recipe titles, ingredients, steps, and tags with relevance ranking.
  • Filtered queries — combine tag, cuisine, max cook time, and source filters with text search.
  • Schema migrations via refinery — idempotent, embedded SQL migrations.
  • Tag management — list tags with counts, query tags per recipe, add/remove tags (writes back to .cook files).
  • Reindex — rebuild the entire database from .cook files on disk. Content-hash based skip for unchanged files.

Storage Model

~/fond/
  recipes/            ← .cook files (SOURCE OF TRUTH)
    chicken-adobo.cook
  fond.db             ← SQLite index (DERIVED, rebuildable)

Usage

use fond_store::{FondPaths, FondDb, Repo};

let paths = FondPaths::resolve(None)?;
let db = FondDb::open(&paths.db_path)?;
let repo = Repo::new(&db);

let results = repo.search("chicken")?;
for r in &results {
    println!("{} ({})", r.title, r.slug);
}

License

MIT

Part of the fond workspace.