OpenCookbook is an opensource cloud native application to manage your personal recipes and to support you with many features all around cooking. It also supports importing from various cooking sites on the internet.
The base feature. A way to manage your recipes, search for recipes, organize your recipes in various groups.
Every recipe has ingredients and preparation steps. Besides your recipe, they are used to estimate the calories and nutrients of your recipe.
Recipes can be imported from various recipe websites to have all your favorite recipes in one place. Share a page, an Instagram post or a recipe text from any app on Android to CookPal, or paste a link or text on the import screen. Instagram captions and texts open as a draft you check before saving.
No more indecision about what to cook today. Plan your meals in advance and let CookPal support your selections.
What ingredients need to go in next? CookPal will tell you.
OpenCookbook is designed to run without extensive preparation and installation. All you need is a docker or kubernetes environment and you are good to go.
- Download this git repository
git clone https://github.com/steve192/opencookbook
cd opencookbook/compose
- Edit the environment variables in the
.envfile to your personal needs.
❗ IMPORTANT ❗ at least change DB_PASSWORD or your installation will be vulnerable, and set INSTANCE_URL to the public address of your installation without /app (e.g. https://cookbook.example.com or http://<server>:3009). Invitation and password reset links and all mails are built from it.
- Start docker-compose
docker compose up -d
The app is served at /app. / opens the app as well, unless LANDING_ENABLED shows the CookPal project page there. The legal texts the app shows (terms.html, privacy.html, imprint.html) go into compose/legal, see the README there.
CookPal counts sign-in attempts per visitor, so a reverse proxy in front (for HTTPS) has to set X-Forwarded-For. Traefik, Caddy and Nginx Proxy Manager do that by default; with a hand-written nginx config add proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;.
Right after the first start, open https://<your domain>/admin, or http://<server>:3009/admin while you have no domain yet. Until the setup is done, whoever gets there first becomes the administrator, so do this immediately.
- Create the admin account.
- Check the instance overview. It shows how your installation is configured and whether the mail server, the recipe import and the recipe scan work.
- Choose the registration mode: Open lets anyone create an account, Invitation only admits only people with an invitation link.
- Invite people under Invitations: create a link and send it to them. A link works once and expires after 1, 7 or 30 days. The person opening it picks an email address and a password.
The app stays closed until the setup is done.
Mail is optional and needs SMTP_* in the .env besides INSTANCE_URL. Without it, open signups stay locked until an admin activates them in the admin panel, and invitation and password reset links are not mailed but handed over from the admin panel. With it, accounts confirm themselves by mail, and links can be mailed as well.
docker compose pull && docker compose up -d
TODO
- Complete management of recipes (create, search, manage)🚧
- Mealplanning in advance (manual)✔️
- Mealplanning in advance (automatic suggestions)🚧
- Automatic calculation of calories🚧
- Advanced guided cooking (hands-free etc.)🚧
- And of course all your suggestions :)
This project is structured into different modules
A repository containing an overview on the whole project. It contains general documentation, installation instructions and deployment configs such as docker-compose and kubernetes deployments
The frontend for opencookbook.
The the backend/apiserver for opencookbook.
API documentation is available here: https://cookpal.io/api-docs
A proxy wiring up the frontend and apiserver. Basically nginx with routes configured (route /api to apiserver and the rest to frontend)
Since i like to cook in my free time and i am a person who likes to get the same taste every time i cook the same meal, i use a variety of recipes with exact instructions and ingredients. i use either family recipes or recipes from the various cooking sites on the internet.
My problem has always been to be able to put them all in one place without having to go to many different sites.
On the other hand, I am a software developer who likes to try new technologies from time to time. This time my goal was to build a scalable cloud native application. This is how opencookbook came into being.

