TandoorRecipes

TandoorRecipes

Docker app from CorneliousJD's Repository

Overview

Tandoor Recipes is a Django application to manage, tag and search recipes using either built in models or external storage providers hosting PDF's, Images or other files.



Tandoor Recipes

The recipe manager that allows you to manage your ever growing collection of digital recipes.

WebsiteInstallationDocsDemoCommunityDiscord

Preview

Core Features

  • 🥗 Manage your recipes - Manage your ever growing recipe collection
  • 📆 Plan - multiple meals for each day
  • 🛒 Shopping lists - via the meal plan or straight from recipes
  • 🪄 use AI to recognize images, sort recipe steps, find nutrition facts and more
  • 📚 Cookbooks - collect recipes into books
  • 👪 Share and collaborate on recipes with friends and family

Made by and for power users

  • 🔍 Powerful & customizable search with fulltext support and TrigramSimilarity
  • 🏷️ Create and search for tags, assign them in batch to all files matching certain filters
  • ↔️ Quickly merge and rename ingredients, tags and units
  • 📥️ Import recipes from thousands of websites supporting ld+json or microdata
  • ➗ Support for fractions or decimals
  • 🐳 Easy setup with Docker and included examples for Kubernetes, Unraid and Synology
  • 🎨 Customize your interface with themes
  • 📦 Sync files with Dropbox and Nextcloud

All the must haves

  • 📱Optimized for use on mobile devices
  • 🌍 localized in many languages thanks to the awesome community
  • 📥️ Import your collection from many other recipe managers
  • ➕ Many more like recipe scaling, image compression, printing views and supermarkets

This application is meant for people with a collection of recipes they want to share with family and friends or simply store them in a nicely organized way. A basic permission system exists but this application is not meant to be run as a public page.

Docs

Documentation can be found here.

❤️ Support our work ❤️

Tandoor is developed by volunteers in their free time just because its fun. That said earning some money with the project allows us to spend more time on it and thus make improvements we otherwise couldn't. Because of that there are several ways you can support us

  • GitHub Sponsors You can sponsor contributors of this project on GitHub: vabene1111
  • Patron You can sponsor contributors of this project on Patron: vabene111
  • Host at Hetzner We have been very happy customers of Hetzner for multiple years for all of our projects. If you want to get into self-hosting or are tired of the expensive big providers, their cloud servers are a great place to get started. When you sign up via our referral link you will get 20€ worth of cloud credits and we get a small kickback too.
  • Let us host for you We are offering a hosted version where all profits support us and the development of tandoor (currently only available in germany).

Contributing

Contributions are welcome but please read this BEFORE contributing anything!

Your Feedback

Share some information on how you use Tandoor to help me improve the application Google Survey

Get in touch

Community Get support, share best practices, discuss feature ideas, and meet other Tandoor users.
Discord We have a public Discord server that anyone can join. This is where all our developers and contributors hang out and where we make announcements

License

Beginning with version 0.10.0 the code in this repository is licensed under the GNU AGPL v3 license with a common clause selling exception. See LICENSE.md for details.

NOTE: There appears to be a whole range of legal issues with licensing anything other than the standard completely open licenses. I am in the process of getting some professional legal advice to sort out these issues. Please also see Issue 238 for some discussion and reasoning regarding the topic.

Reasoning This software and all its features are and will always be free for everyone to use and enjoy.

The reason for the selling exception is that a significant amount of time was spend over multiple years to develop this software. A paid hosted version which will be identical in features and code base to the software offered in this repository will likely be released in the future (including all features needed to sell a hosted version as they might also be useful for personal use). This will not only benefit me personally but also everyone who self-hosts this software as any profits made through selling the hosted option allow me to spend more time developing and improving the software for everyone. Selling exceptions are approved by Richard Stallman and the common clause license is very permissive (see the FAQ).

Install TandoorRecipes on Unraid in a few clicks.

Find TandoorRecipes in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for TandoorRecipes Review the template variables and paths Click Install

Categories

Download Statistics

12,371,790
Total Downloads
350,622
This Month
297,299
Avg / Month

Total Downloads Over Time

Loading chart...

Related apps

Explore more like this

Explore all

Details

Repository
vabene1111/recipes
Last Updated2026-06-29
First Seen2020-10-24

Runtime arguments

Web UI
http://[IP]:[PORT:80]
Network
bridge
Shell
sh
Privileged
false

Template configuration

PortPorttcp

Container Port: 80

Target
80
Default
8154
Value
8154
TimezoneVariable

Timezone in TZ format. See here: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

Target
TIMEZONE
Default
America/New_York
Value
America/New_York
Database EngineVariable

Either SQLite (default for unRAID) or PostgreSQL with: django.db.backends.postgresql

Target
DB_ENGINE
Default
django.db.backends.sqlite3
Value
django.db.backends.sqlite3
Database LocationPathrw

Container Path: /data

Target
/data
Default
/mnt/user/appdata/recipes/data
Value
/mnt/user/appdata/recipes/data
Media LocationPathrw

Container Path: /opt/recipes/mediafiles/

Target
/opt/recipes/mediafiles/
Default
/mnt/user/appdata/recipes/media
Value
/mnt/user/appdata/recipes/media
Secret KeyVariable

Randomly generate a secret key please.

Target
SECRET_KEY
Allowed HostsVariable

Either * for all, or specific domains/subdomains, etc.

Target
ALLOWED_HOSTS
Default
*
Value
*
Comment SystemVariable

Enables or disables the comment system.

Target
COMMENT_PREF_DEFAULT
Default
1
Value
1
Shopping List Min RefreshVariable

Minimum shopping list refresh interval.

Target
SHOPPING_MIN_AUTOSYNC_INTERVAL
Default
5
Value
5
Debug ModeVariable

Debug mode disabled (default) or enabled.

Target
DEBUG
Default
0
Value
0
Serve Gunicorn MeidaVariable

Enables serving media files directly from Gunicorn.

Target
GUNICORN_MEDIA
Default
1
Value
1
PostgreSQL HostVariable

Host for PostgreSQL, should you choose to use it.

Target
POSTGRES_HOST
PostgreSQL PortVariable

Port for PostgreSQL server shouldy you choose to use it.

Target
POSTGRES_PORT
Default
5432
Value
5432
PostgreSQL UserVariable

User for PostgreSQL should you choose to use it.

Target
POSTGRES_USER
PostgreSQL PasswordVariable

Password for PostgreSQL should you choose to use it.

Target
POSTGRES_PASSWORD
DatabaseVariable

Name of SQLite database, or the name of your PostgreSQL database if you are using that.

Target
POSTGRES_DB
Default
/data/recipes.db
Value
/data/recipes.db
DatabaseVariable

Number of Gunicorn threads.

Target
GUNICORN_THREADS
Default
1
Value
1
DatabaseVariable

Number of Gunicorn workers.

Target
GUNICORN_WORKERS
Default
1
Value
1