fond 0.3.0

A private, local-first personal cooking & recipe manager
# ๐Ÿณ fond

**A local-first personal cooking & recipe management system.**

Your recipes, your data, your kitchen. No accounts. No cloud dependency. Family-shared from day one.

fond combines the web-clipping convenience of [Paprika](https://www.paprikaapp.com/),
the open-format philosophy of [Cooklang](https://cooklang.org/), and the meal-planning
depth of [Mealie](https://mealie.io/) โ€” in a CLI-first tool that keeps everything on
your machine as plain-text files you own forever.

```sh
fond import paprika ~/recipes.paprikarecipes  # Bring your Paprika collection
fond import url https://example.com/recipe    # Import from any recipe site
fond search "braised pork"                    # Instant full-text search
fond view chicken-adobo                       # Render a recipe
fond cook chicken-adobo --serve-at 19:00      # Backward-scheduled cook mode
fond pantry check chicken-adobo               # What do you have? 85% coverage
fond grocery from-recipe chicken-adobo        # Pantry-aware shopping list
fond plan week --add monday:dinner=chicken-adobo
fond scoreboard --since 2025-01-01            # What have you cooked most?
```

> **Status**: Early development โ€” scaffolding and spikes. See [ROADMAP.md]ROADMAP.md
> for the full plan.

---

## Why "fond"?

**fond** has two meanings that capture what this project is about:

In French cooking, a **fond** (*fond de cuisine*) is the caramelized layer of browned
bits left at the bottom of a pan after searing. It's the flavor foundation โ€” you deglaze
it to build a sauce. Every great dish starts with a good fond.

In English, **fond** means warmth and affection โ€” the feeling embedded in a family's
recipes, the handwritten notes in the margins, the memory of cooking together.

The name captures both: the technical foundation of good cooking and the emotional
foundation of a family kitchen.

> *"The foundation of your kitchen."*

---

## Principles

- **Your data, your files.** Recipes live as plain-text `.cook` files you can read,
  edit, and back up with any tool. SQLite is a derived index โ€” delete it and
  `fond reindex` rebuilds everything.
- **Local-first.** Works fully offline. Network access is only for optional URL imports.
- **Family-shared.** Designed for a household from day one. Personal notes, ratings,
  and dietary preferences are per-user; recipes are shared.
- **Cooklang-native.** Recipes use the open [Cooklang]https://cooklang.org/ format.
  No proprietary file formats. No lock-in.
- **CLI-first.** A fast, scriptable command-line tool. Web, iOS, macOS, and Apple Watch
  interfaces are planned โ€” all built on the same Rust core.
- **Import everything.** Bring your Paprika collection, clip recipes from NYT Cooking,
  scrape food blogs. Years of recipes should transfer in minutes.
- **Open source.** MIT licensed. Contributions welcome.

## Planned Features

- ๐Ÿ“ Recipe management with Cooklang round-trip fidelity
- ๐Ÿ“ฅ Import from Paprika, schema.org sites, NYT Cooking, Cook's Illustrated
- ๐Ÿ“ค Export to JSON, Paprika, and plain copy
- ๐Ÿ” Instant full-text search with tag, cuisine, and time filters
- โฑ๏ธ Realistic cooking timelines with backward scheduling from serve time
- ๐Ÿณ TUI cook mode with live timers and step-by-step guidance
- ๐Ÿฅ˜ Presence-based pantry with recipe coverage percentage
- ๐Ÿ›’ Pantry-aware, aisle-grouped grocery lists
- ๐Ÿ“… Weekly meal planning with consolidated shopping
- ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ Family profiles with dietary preferences and allergen flags
- ๐Ÿ“Š Personal scoreboard โ€” most cooked, highest rated, cooking history
- โš–๏ธ Recipe scaling with non-linear ingredient warnings
- ๐ŸŒ Web UI (`fond serve`) for non-CLI household members
- ๐Ÿ“ฑ Native Apple apps (iOS, iPad, macOS, Apple Watch)

## Architecture

```text
~/fond/
  recipes/            โ† .cook files (SOURCE OF TRUTH)
    chicken-adobo.cook
    sourdough.cook
  photos/             โ† content-addressed images
  fond.db             โ† SQLite index (DERIVED, rebuildable)
  config.toml
```

### Tech Stack

- **Language**: Rust (2021 edition)
- **Recipe format**: [Cooklang]https://cooklang.org/ (`.cook` plain text)
- **Database**: SQLite with FTS5 full-text search
- **CLI**: clap v4 with `--json` for scripting
- **TUI**: ratatui (cook mode)
- **Web**: Axum + HTMX (Phase 4)
- **Architecture**: Cargo workspace โ€” `fond`, `fond-core`, `fond-domain`, `fond-store`,
  `fond-import`, `fond-scrape`, `fond-timeline`

## Documentation

- [Product Roadmap]ROADMAP.md โ€” 9-phase plan from first recipe to moonshots
- [Architecture Decision Records]docs/adr/ โ€” 10 ADRs covering load-bearing decisions
- [Contributing Guide]CONTRIBUTING.md โ€” development setup and contribution guidelines

## License

[MIT](LICENSE)

---

*Built by [kafkade](https://github.com/kafkade).*