--- title: Tamari created: 2026-06-08 updated: 2026-06-08 type: app tags: [catalogue, recipes, self-hosted, python] confidence: medium contested: false sources: - https://tamariapp.com - https://github.com/alexbates/Tamari --- # Tamari 🥢 > Application web complète de gestion de recettes, en Python (Django), avec planification et liste de courses. | Métadonnée | Valeur | | :--- | :--- | | **Site web** | https://tamariapp.com | | **GitHub** | https://github.com/alexbates/Tamari | | **License** | MIT | | **Langage** | Python (Django) | | **Étoiles** | 128 | | **Dernière MAJ** | 2026-05-25 | | **Catégorie** | [[cat-recipes]] | ## Description Tamari est une **application web de recettes** écrite en Python avec le framework **Django**, ce qui lui confère une base solide, mature et sécurisée. Le projet est l'œuvre d'**Alex Bates** et se positionne comme une alternative **plus légère que Mealie**, plus simple à déployer, tout en offrant les fonctionnalités essentielles d'un gestionnaire de recettes moderne. L'application propose la création de recettes avec ingrédients structurés (nom, quantité, unité), les étapes numérotées, les photos, les tags, les catégories, le **planning de repas**, la **liste de courses** générée automatiquement à partir du planning, et l'**import depuis URL** avec parsing basique. L'interface est responsive et fonctionne aussi bien sur mobile que sur desktop. Tamari utilise **SQLite** par défaut (zéro configuration) mais supporte aussi PostgreSQL/MySQL. L'**API REST Django REST Framework** est exposée pour des intégrations tierces (Home Assistant, scripts, CLI). C'est un bon choix pour un homelab qui veut un **gestionnaire de recettes en Python pur** sans la complexité de Mealie (FastAPI + Vue.js + plusieurs services). ## Installation ### Docker Compose ```yaml services: tamari: image: alexbates/tamari:latest container_name: tamari environment: - DJANGO_SECRET_KEY=*** - DJANGO_DEBUG=False - DJANGO_ALLOWED_HOSTS=tamari.example.com - DATABASE_URL=sqlite:///db/tamari.sqlite3 - TZ=Europe/Paris volumes: - ./data/db:/app/db - ./data/media:/app/media ports: - "8000:8000" labels: - traefik.enable=true - traefik.http.routers.tamari.rule=Host(`tamari.example.com`) - traefik.http.routers.tamari.entrypoints=websecure - traefik.http.routers.tamari.tls.certresolver=letsencrypt - traefik.http.services.tamari.loadbalancer.server.port=8000 restart: unless-stopped ``` ### Manuel ```bash git clone https://github.com/alexbates/Tamari.git cd Tamari && pip install -r requirements.txt python manage.py migrate && python manage.py createsuperuser python manage.py runserver 0.0.0.0:8000 ``` ## Configuration 1. Cloner le repo et installer les dépendances : `pip install -r requirements.txt`. 2. Configurer **`DJANGO_SECRET_KEY`** dans `.env` (`openssl rand -hex 50`). 3. Lancer les migrations : `python manage.py migrate`. 4. Créer le **super-utilisateur** : `python manage.py createsuperuser`. 5. (Production) Servir avec **Gunicorn + Nginx** ou via le compose ci-dessus. ## Alternatives - **Open source** : [[app-mealie]] (référence), [[app-vanilla-cookbook]] (PHP), [[app-norish]] (Next.js), [[app-bar-assistant]] (cocktails), Tandoor Recipes, Grocy, RecipeSage, Forkful, kptn, RecipeMD, Cooklang, Bakin Recipe, Mealie-Scrape. - **Propriétaire** : Paprika Recipe Manager, CopyMeThat, Plan to Eat, Yummly, BigOven, Samsung Food, Mela (iOS), Crouton (iOS). ## Sécurité - **`DJANGO_SECRET_KEY`** : clé critique, à regénérer et stocker dans un secret manager. - **`DJANGO_DEBUG=False`** obligatoire en production. - **HTTPS obligatoire** via reverse proxy (Caddy, Traefik). - **CSRF/CSP** : Django fournit des protections natives, à conserver activées. - **Backups** : copier `./data/db` (SQLite) ou utiliser `pg_dump` pour Postgres. ## Ressources - Code : https://github.com/alexbates/Tamari - Site : https://tamariapp.com - Issues : https://github.com/alexbates/Tamari/issues ## Pages Liées - [[cat-recipes]] — Catégorie parente - [[app-mealie]] — Référence du domaine - [[app-vanilla-cookbook]] — Alternative PHP - [[recettes-docker-compose]] — Modèles de stacks