Add Doris Kitchen household recipe app
This commit is contained in:
88
home/doris-kitchen/README.md
Normal file
88
home/doris-kitchen/README.md
Normal file
@@ -0,0 +1,88 @@
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user