Outil de planification de repas et de génération de liste de courses (pensé pour recopier dans Leclerc Drive).
Deux volets :
- Plats — un répertoire de plats que tu sais faire, reliés à leurs ingrédients. Tu choisis quelques plats (chacun peut couvrir plusieurs repas) et l'outil agrège automatiquement les ingrédients.
- Achats récurrents — une liste à cocher, groupée par catégories (café, jus, bière, lessive…), pour ne rien oublier.
La liste finale est triée par rayon (parcours Leclerc) avec des cases à cocher.
Le projet utilise uv.
uv sync # installe les dépendancesuv run courses- Accueil : choisis une liste de courses existante ou crée-en une nouvelle (N).
- 1 — Plats : coche les plats voulus, ajuste le nombre de repas par plat. Les mieux notés (tes goûts + saison + anti-routine) sont en haut.
- 2 — Achats récurrents : coche ce dont tu as besoin (les habituels sont pré-cochés).
- Générer la liste : produit la liste triée par rayon et l'enregistre dans
output/liste-<slug>.md.
uv run courses recettes # plats classés par score de goût
uv run courses liste --plat tartiflette:4 --plat salade-ete:2
uv run courses cuisine tartiflette # marque un plat cuisiné (anti-routine)
uv run courses gout aime oignon 3 # règle tes préférences
uv run courses gout evite coriandre
uv run courses valider # vérifie l'intégrité des registres| Fichier | Contenu |
|---|---|
ingredients.yaml |
catalogue d'ingrédients (rayon, unité, quantifie) |
recipes.yaml |
répertoire de plats validés |
recurrents.yaml |
produits récurrents groupés par catégorie |
preferences.yaml |
tes goûts (ingrédients/tags aimés ou évités) |
listes/ |
tes listes de courses en cours (créées depuis le TUI) |
Pour qu'un LLM crée/maintienne ces données proprement (et vérifie les recettes en ligne au lieu de les inventer), voir AGENTS.md.
quantifie sur un ingrédient : true → on cumule les quantités (2 + 3 oignons = 5 oignons) ; false → ingrédient « de fond » (riz, pâtes, huile…) affiché en une seule ligne « Riz (suffisamment pour N repas) », jamais de doublon.
repas_par_defaut sur un plat = nombre de repas qu'il te dure d'habitude ; sert de base au calcul des quantités quand tu demandes plus (ou moins) de repas.
courses/core.py— logique pure (score de goût, agrégation, tri par rayon, rendu), réutilisable par le TUI, la CLI et un futur agent IA / serveur MCP.courses/models.py— dataclasses + constantes (rayons, saisons).courses/storage.py— lecture/écriture YAML.courses/tui/— interface Textual (accueil + 2 volets + génération).courses/cli.py— CLI Typer.
uv run pytest