89 lines
2.6 KiB
Markdown
89 lines
2.6 KiB
Markdown
# 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
|
|
|
|
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
|
|
|
|
```bash
|
|
cd /home/fizzlepoof/repos/truenas-stacks/home/doris-kitchen
|
|
cp .env.example .env
|
|
bin/run-local.sh
|
|
```
|
|
|
|
## Deploy shape
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
curl -fsS http://127.0.0.1:8092/api/health
|
|
curl -fsS http://127.0.0.1:8092/api/dashboard/summary
|
|
```
|