Files
truenas-stacks/home/doris-kitchen

Doris Kitchen

Pangolin-protected household recipe queue, search, taste learning, and weekly meal-planning app for John and Leanne.

Purpose

This app gives the household a better recipe intake flow than KitchenOwl's native importer:

  • search the web for recipe ideas in English-first sources
  • queue suggestions for approval, rejection, or later review
  • learn household taste from those decisions
  • manage soft-blacklisted ingredients and avoid terms
  • import high-confidence approved recipes into KitchenOwl
  • build weekly meal-plan suggestions that try to reuse ingredients and reduce waste

Runtime shape

  • Repo source: home/doris-kitchen
  • Expected live NOMAD runtime: /opt/doris-kitchen
  • Expected public path: chef.paccoco.com behind Pangolin auth

Do not run production from an agent workspace.

Current model

This first pass uses a JSON-backed state store under /data/state. It keeps:

  • the household taste profile
  • suggestion queue and decisions
  • generated meal plans

KitchenOwl remains the canonical recipe store after approval/import.

Household defaults

The app seeds the profile with soft avoid terms for:

  • lamb
  • mutton
  • offal
  • fish
  • seafood
  • spicy / overly spicy

These are soft blacklists, not hard bans. Search and suggestion scoring pushes them down or hides them by default, but the household can toggle them on and off later.

Features

Suggestion queue

  • Yes, add to KitchenOwl approves the recipe, records the preference signal, and imports it when the recipe is not already present.
  • Save for later keeps the suggestion in the queue without teaching a dislike.
  • No thanks teaches a household dislike signal from the recipe's ingredients and tags.

Search runs through English-first recipe results, then normalizes recipe payloads into a KitchenOwl-friendly structure before showing them in the queue.

Weekly planning

The planner starts from anchor meal ideas and recent approved recipes, then suggests a week that reuses overlapping ingredients where possible.

Local run

cd /home/fizzlepoof/repos/truenas-stacks/home/doris-kitchen
cp .env.example .env
bin/run-local.sh

Deploy shape

sudo mkdir -p /opt/doris-kitchen/data
sudo rsync -a --delete --exclude '.env' --exclude 'data/' /home/fizzlepoof/repos/truenas-stacks/home/doris-kitchen/ /opt/doris-kitchen/
cd /opt/doris-kitchen
sudo cp .env.nomad.example .env
# edit .env
sudo docker compose --env-file .env config
sudo docker compose --env-file .env up -d --build

Verification

curl -fsS http://127.0.0.1:8092/api/health
curl -fsS http://127.0.0.1:8092/api/dashboard/summary