Meal Stack is a Django recipe web application for managing, organizing, and sharing cooking recipes. It supports recipe search, tagging, categories, localized UI text, OIDC login, recipe scrapers, admin bulk actions, and a refined recipe detail experience with cook mode, print export, serving adjustments, and share links.
- Create, edit, and manage recipes
- Search recipes, ingredients, tags, and categories
- Browse recipes in a compact list layout and a polished detail view
- Adjust servings and recalculate displayed values
- Use cook mode for a compact, focused reading experience
- Export styled recipe PDFs for printing or saving
- Share recipe URLs, including the current serving selection
- Manage ingredients, units, tags, categories, and importers in the admin
- Bulk update recipe status between draft and published in the admin
- Sign in with OIDC or use the built-in login
- Import ingredients from OpenFoodFacts
- Import recipes from Chefkoch, BBC Good Food, and Epicurious
- Run ingredient imports from the CLI with
ingredient_importer - Run recipe imports from the CLI with
recipe_importer - Use light and dark themes
git clone https://github.com/TrickShotMLG02/MealStack.git
cd MealStack
cp .env.example .envAdjust .env for your local setup. If you use Docker Compose, review docker-compose.env as well.
Meal Stack uses uv:
uv python install
uv syncuv run python manage.py migrateRun all seeds at once:
uv run python manage.py seed_allOr run individual seeds:
uv run python manage.py seed_admin_user
uv run python manage.py seed_tags
uv run python manage.py seed_units
uv run python manage.py seed_ingredients
uv run python manage.py seed_recipeuv run python manage.py runserverOpen:
- App: http://127.0.0.1:8000/
- Admin: http://127.0.0.1:8000/admin/
Default seed login:
- User:
admin - Password:
admin
The repository includes docker-compose.yml for local stack usage.
docker compose up --buildCompose uses:
.envfor application settingsdocker-compose.envfor Compose-specific and stack-specific overrides
Portainer stacks cannot use build: for remote deployments. Build and push the image first, then replace the build: block with one of the published images:
trickshotmlg/mealstack:latesttrickshotmlg/mealstack:dev
For Portainer, comment out the active env_file block and provide stack variables through stack.env.
You can also run Meal Stack directly from Docker Hub:
docker run --env-file .env -p 8000:8000 trickshotmlg/mealstack:latestDevelopment image:
docker run --env-file .env -p 8000:8000 trickshotmlg/mealstack:devContributions are welcome.
- Check the Contribution Issue to get started.
- Fork the repo, make your changes, and submit a pull request.
This repository was founded and built by hand without AI tools.
AI was used selectively for:
- refactoring support
- idea generation
- complex implementation work such as fuzzy search
- web design and UI refinement
- debugging help
- README generation and rewording
AI-assisted changes were always reviewed, adapted where needed, and integrated deliberately. Nothing was copied blindly into the codebase.
This project is licensed under the GNU General Public License v3 (GPL-3.0). You are free to use, modify, and distribute this software under the terms of the GPL-3.0, which requires that any distributed modifications or derivative works also be open source.
Please give credit to the original authors when using or modifying this project.

