diff --git a/README.md b/README.md index 2b630a07a..23223f116 100644 --- a/README.md +++ b/README.md @@ -122,4 +122,4 @@ Project Link: [https://github.com/hay-kot/mealie](https://github.com/hay-kot/mea [license-url]: https://github.com/hay-kot/mealie/blob/master/LICENSE.txt [linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=flat-square&logo=linkedin&colorB=555 [linkedin-url]: https://linkedin.com/in/hay-kot -[product-screenshot]: docs/docs/img/home_screenshot.png +[product-screenshot]: docs/docs/assets/img/home_screenshot.png diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index c8fb6a749..cf73fa8f2 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -36,7 +36,7 @@ services: image: squidfunk/mkdocs-material restart: always ports: - - 9923:8000 + - 9922:8000 volumes: - ./docs:/docs diff --git a/docs/docs/gifs/api-extras.gif b/docs/docs/assets/gifs/api-extras.gif similarity index 100% rename from docs/docs/gifs/api-extras.gif rename to docs/docs/assets/gifs/api-extras.gif diff --git a/docs/docs/gifs/backup-demo-v1.gif b/docs/docs/assets/gifs/backup-demo-v1.gif similarity index 100% rename from docs/docs/gifs/backup-demo-v1.gif rename to docs/docs/assets/gifs/backup-demo-v1.gif diff --git a/docs/docs/gifs/bulk-add-demo.gif b/docs/docs/assets/gifs/bulk-add-demo.gif similarity index 100% rename from docs/docs/gifs/bulk-add-demo.gif rename to docs/docs/assets/gifs/bulk-add-demo.gif diff --git a/docs/docs/gifs/editor-demo.gif b/docs/docs/assets/gifs/editor-demo.gif similarity index 100% rename from docs/docs/gifs/editor-demo.gif rename to docs/docs/assets/gifs/editor-demo.gif diff --git a/docs/docs/gifs/homepage-settings-v1.gif b/docs/docs/assets/gifs/homepage-settings-v1.gif similarity index 100% rename from docs/docs/gifs/homepage-settings-v1.gif rename to docs/docs/assets/gifs/homepage-settings-v1.gif diff --git a/docs/docs/gifs/meal-plan-demo-v2.gif b/docs/docs/assets/gifs/meal-plan-demo-v2.gif similarity index 100% rename from docs/docs/gifs/meal-plan-demo-v2.gif rename to docs/docs/assets/gifs/meal-plan-demo-v2.gif diff --git a/docs/docs/gifs/theme-demo-v2.gif b/docs/docs/assets/gifs/theme-demo-v2.gif similarity index 100% rename from docs/docs/gifs/theme-demo-v2.gif rename to docs/docs/assets/gifs/theme-demo-v2.gif diff --git a/docs/docs/gifs/url-demo.gif b/docs/docs/assets/gifs/url-demo.gif similarity index 100% rename from docs/docs/gifs/url-demo.gif rename to docs/docs/assets/gifs/url-demo.gif diff --git a/docs/docs/assets/img/add-user.png b/docs/docs/assets/img/add-user.png new file mode 100644 index 000000000..02cd1517f Binary files /dev/null and b/docs/docs/assets/img/add-user.png differ diff --git a/docs/docs/img/admin-backup.png b/docs/docs/assets/img/admin-backup.png similarity index 100% rename from docs/docs/img/admin-backup.png rename to docs/docs/assets/img/admin-backup.png diff --git a/docs/docs/img/admin-theme.png b/docs/docs/assets/img/admin-theme.png similarity index 100% rename from docs/docs/img/admin-theme.png rename to docs/docs/assets/img/admin-theme.png diff --git a/docs/docs/img/app_diagram.drawio.svg b/docs/docs/assets/img/app_diagram.drawio.svg similarity index 100% rename from docs/docs/img/app_diagram.drawio.svg rename to docs/docs/assets/img/app_diagram.drawio.svg diff --git a/docs/docs/img/app_diagram.png b/docs/docs/assets/img/app_diagram.png similarity index 100% rename from docs/docs/img/app_diagram.png rename to docs/docs/assets/img/app_diagram.png diff --git a/docs/docs/img/favicon.png b/docs/docs/assets/img/favicon.png similarity index 100% rename from docs/docs/img/favicon.png rename to docs/docs/assets/img/favicon.png diff --git a/docs/docs/assets/img/group-manager.png b/docs/docs/assets/img/group-manager.png new file mode 100644 index 000000000..192da9bb0 Binary files /dev/null and b/docs/docs/assets/img/group-manager.png differ diff --git a/docs/docs/assets/img/home_screenshot.png b/docs/docs/assets/img/home_screenshot.png new file mode 100755 index 000000000..c137d2598 Binary files /dev/null and b/docs/docs/assets/img/home_screenshot.png differ diff --git a/docs/docs/img/ios-shortcut-image.jpg b/docs/docs/assets/img/ios-shortcut-image.jpg similarity index 100% rename from docs/docs/img/ios-shortcut-image.jpg rename to docs/docs/assets/img/ios-shortcut-image.jpg diff --git a/docs/docs/img/iphone-image.png b/docs/docs/assets/img/iphone-image.png similarity index 100% rename from docs/docs/img/iphone-image.png rename to docs/docs/assets/img/iphone-image.png diff --git a/docs/docs/assets/img/sign-up-links.png b/docs/docs/assets/img/sign-up-links.png new file mode 100644 index 000000000..e8e171979 Binary files /dev/null and b/docs/docs/assets/img/sign-up-links.png differ diff --git a/docs/docs/assets/img/site-settings.png b/docs/docs/assets/img/site-settings.png new file mode 100644 index 000000000..a52974068 Binary files /dev/null and b/docs/docs/assets/img/site-settings.png differ diff --git a/docs/docs/stylesheets/custom.css b/docs/docs/assets/stylesheets/custom.css similarity index 100% rename from docs/docs/stylesheets/custom.css rename to docs/docs/assets/stylesheets/custom.css diff --git a/docs/docs/changelog/v0.4.0.md b/docs/docs/changelog/v0.4.0.md index 3ded7999d..eecb60d0c 100644 --- a/docs/docs/changelog/v0.4.0.md +++ b/docs/docs/changelog/v0.4.0.md @@ -1,6 +1,23 @@ # v0.4.0 Whoa, What a Release! [DRAFT] -### Bug Fixes +**App Version: v0.4.0** + +**Database Version: v0.4.0** + +## Breaking Changes + +!!! error "Breaking Changes" + + #### Database + A new database will be created. You must export your data and then import it after upgrading. + + #### Site Settings + With the addition of group settings and a re-write of the database layer of the application backend, there is no migration path for your current site settings. Webhooks Settings, Meal Plan Categories are now managed by groups. Site settings, mainly homepage settings, are not site specific and managed by administrators. + + #### ENV Variables + Names have been changed to be more consistent with industry standards. See the [Installation Page](/getting-started/install/) for new parameters. + +## Bug Fixes - Fixed Search Results Limited to 100 - #198 - Fixed Recette from marmiton.org not fully scrapped - #196 - Fixed Unable to get a page to load - #194 @@ -10,9 +27,21 @@ - Fixed Original URL not saved to imported recipe in 0.3.0-dev - #183 - Fixed "IndexError: list index out of range" when viewing shopping list for meal plan containing days without a recipe selected - #178 -### Features and Improvements +## Features and Improvements -#### User Authentication +### General + - Documentation Rewrite + - New Documentation + - Landing Page + - Custom Caddy Configuration + - User Management + - Introduction + - Updated Documentation + - Everything! + - The API Reference is now better embedded inside of the docs + - New default external port in documentation (Port 9000 -> 9925). This is only the port exposed by the host to the docker image. It doesn't change any existing functionality. + +### User Authentication - Authentication! Tons of stuff went into creating a flexible authentication platform for a lot of different use cases. Review the documentation for more information on how to use the authentication, and how everything works together. More complex management of recipes and user restrictions are in the works, but this is a great start! Some key features include - Sign Up Links - Admin and User Roles @@ -20,14 +49,14 @@ - Group Management - Create/Edit/Delete Restrictions -#### UI Improvements +### UI Improvements - Completed Redesign of the Admin Panel - Profile Pages - Side Panel Menu - Improved UI for Recipe Search - Language selector is now displayed on all pages and does not require an account -#### Recipe Data +### Recipe Data - Recipe Database Refactoring. Tons of new information is now stored for recipes in the database. Not all is accessible via the UI, but it's coming. - Nutrition Information - calories @@ -40,7 +69,7 @@ - "categories" has been migrated to "recipeCategory" to adhere closer to the standard schema - "tool" - a list of tools used for the recipe -#### Behind the Scenes +### Behind the Scenes - Removed CDN dependencies - Database Model Refactoring - File/Folder Name Refactoring diff --git a/docs/docs/contributors/developers-guide/code-contributions.md b/docs/docs/contributors/developers-guide/code-contributions.md index 9d5385e09..6168a7a74 100644 --- a/docs/docs/contributors/developers-guide/code-contributions.md +++ b/docs/docs/contributors/developers-guide/code-contributions.md @@ -1,8 +1,5 @@ # Contributing to Mealie -!!! Warning - It should be known going into this that this is my first open source project, and my first public github repo I'm actively managing. If something does not make sense, or is not best practice. PLEASE feel free to reach out and let me know. I'm all about improving workflow and making it easier for contributors. - [Please Join the Discord](https://discord.gg/R6QDyJgbD2). We are building a community of developers working on the project. ## We Develop with Github diff --git a/docs/docs/contributors/translating.md b/docs/docs/contributors/translating.md index a53f0d2ad..fa2106cb2 100644 --- a/docs/docs/contributors/translating.md +++ b/docs/docs/contributors/translating.md @@ -1,15 +1,16 @@ -# Contributing with translations +# Contributing with Translations -Having Mealie in different language could help the adaption of Mealie. Translations can be a great way for non-coders to contribute to Mealie. +Mealie supports a framework for the community to contribute different translations. Translations can be a great way for non-coders to contribute to project. -## Is Mealie missing in your language? +## My Language Is Missing If your language is missing, you can add it, by beginning to translate. We use a Vue-i18n in json files. Copy frontend/src/locales/en.json to get started. -## Improving translations +## Improving Translations If your language is missing the translation for some strings, you can help out by adding a translation for that string. If you find a string you think could be improved, please feel free to do so. ## Tooling Currently we use Vue-i18n for translations. Translations are stored in json format located in [frontend/src/locales](https://github.com/hay-kot/mealie/tree/master/frontend/src/locales). + If you have experience with a good Translation Management System, please feel free to chime in on the [Discord](https://discord.gg/R6QDyJgbD2), as such a system could be helpful as the projects grow. Until then, [i18n Ally for VScode](https://marketplace.visualstudio.com/items?itemName=antfu.i18n-ally) is recommended to aid in translating. It also has a nice feature, which shows translations in-place when editing code. i18n Ally will also show which languages is missing translations. \ No newline at end of file diff --git a/docs/docs/getting-started/api-usage.md b/docs/docs/getting-started/api-usage.md index 95f288f97..4964ae6ed 100644 --- a/docs/docs/getting-started/api-usage.md +++ b/docs/docs/getting-started/api-usage.md @@ -6,7 +6,7 @@ Recipes extras are a key feature of the Mealie API. They allow you to create cus For example you could add `{"message": "Remember to thaw the chicken"}` to a recipe and use the webhooks built into mealie to send that message payload to a destination to be processed. - + ## Examples diff --git a/docs/docs/getting-started/install.md b/docs/docs/getting-started/install.md index fb5295712..6cc9fcfa1 100644 --- a/docs/docs/getting-started/install.md +++ b/docs/docs/getting-started/install.md @@ -4,23 +4,27 @@ To deploy docker on your local network it is highly recommended to use docker to [Get Docker](https://docs.docker.com/get-docker/) -[Mealie Docker Image](https://hub.docker.com/r/hkotel/mealie) +[Mealie on Dockerhub](https://hub.docker.com/r/hkotel/mealie) + + - linux/amd64 + - linux/arm/v7 + - linux/arm64 ## Quick Start - Docker CLI -Deployment with the Docker CLI can be done with `docker run` and specify the database type, in this case `sqlite`, setting the exposed port `9000`, mounting the current directory, and pull the latest image. After the image is up an running you can navigate to http://your.ip.addres:9000 and you'll should see mealie up and running! +Deployment with the Docker CLI can be done with `docker run` and specify the database type, in this case `sqlite`, setting the exposed port `9925`, mounting the current directory, and pull the latest image. After the image is up an running you can navigate to http://your.ip.addres:9925 and you'll should see mealie up and running! ```shell docker run \ - -e db_type='sqlite' \ - -p 9000:80 \ + -e DB_TYPE='sqlite' \ + -p 9925:80 \ -v `pwd`:'/app/data/' \ hkotel/mealie:latest ``` ## Docker Compose with SQLite -Deployment with docker-compose is the recommended method for deployment. The example below will create an instance of mealie available on port `9000` with the data volume mounted from the local directory. To use, create a docker-compose.yml file, paste the contents below and save. In the terminal run `docker-compose up -d` to start the container. +Deployment with docker-compose is the recommended method for deployment. The example below will create an instance of mealie available on port `9925` with the data volume mounted from the local directory. To use, create a docker-compose.yml file, paste the contents below and save. In the terminal run `docker-compose up -d` to start the container. ```yaml version: "3.1" @@ -30,9 +34,9 @@ services: image: hkotel/mealie:latest restart: always ports: - - 9000:80 + - 9925:80 environment: - db_type: sqlite + DB_TYPE: sqlite TZ: America/Anchorage volumes: - ./mealie/data/:/app/data @@ -41,13 +45,46 @@ services: ## Env Variables -| Variables | default | description | -| ----------- | ------- | ----------------------------------------------------------------------------------- | -| db_type | sqlite | The database type to be used. Current Options 'sqlite' | -| mealie_port | 9000 | The port exposed by backend API. **do not change this if you're running in docker** | -| api_docs | True | Turns on/off access to the API documentation locally. | -| TZ | UTC | You should set your time zone accordingly so the date/time features work correctly | +| Variables | Default | Description | +| ---------------- | -------- | ----------------------------------------------------------------------------------- | +| DB_TYPE | sqlite | The database type to be used. Current Options 'sqlite' | +| API_PORT | 9000 | The port exposed by backend API. **do not change this if you're running in docker** | +| API_DOCS | True | Turns on/off access to the API documentation locally. | +| DEFAULT_PASSWORD | ChangeMe | The default password for all users created in Mealie | +| TZ | UTC | Must be set to get correct date/time on the server | ## Deployed as a Python Application Alternatively, this project is built on Python and SQLite. If you are dead set on deploying on a linux machine you can run this in an python virtual env. Provided that you know thats how you want to host the application, I'll assume you know how to do that. I may or may not get around to writing this guide. I'm open to pull requests if anyone has a good guide on it. + +## Advanced +!!! warning "Not Required" + The items below are completely optional and are not required to manage or install your Mealie instance. + +### Custom Caddy File +The Docker image provided by Mealie contains both the API and the html bundle in one convenient image. This is done by using a proxy server to serve different parts of the application depending on the URL/URI. Requests sent to `/api/*` or `/docs` will be directed to the API, anything else will be served the static web files. Below is the default Caddyfile that is used to proxy requests. You can override this file by mounting an alternative Caddyfile to `/app/Caddyfile`. + +``` +{ + auto_https off + admin off +} + +:80 { + @proxied path /api/* /docs /openapi.json + + root * /app/dist + encode gzip + uri strip_suffix / + + handle @proxied { + reverse_proxy http://127.0.0.1:9000 + } + + handle { + try_files {path}.html {path} / + file_server + } + +} +``` \ No newline at end of file diff --git a/docs/docs/getting-started/introduction.md b/docs/docs/getting-started/introduction.md index 7cf20b8ff..6ce3a9d61 100644 --- a/docs/docs/getting-started/introduction.md +++ b/docs/docs/getting-started/introduction.md @@ -16,11 +16,11 @@ Mealie is a self hosted recipe manager and meal planner with a RestAPI backend a - 🏷️ Tag recipes with categories or tags to flexible sorting - ⬇️ Import recipes from around the web by URL - 📱 Beautiful Mobile Views -- 📆 Create meal plans -- 🛒 Generate shopping lists from meal plans +- 📆 Create Meal Plans +- 🛒 Generate shopping lists from Meal Plans - 🐳 Easy setup with Docker - 🎨 Customize your interface with color themes layouts -- ✉️ Export and import all your data in any formating with Jinja Tempaltes +- ✉️ Export all your data in any format with Jinja2 Templates, with easy data restoration from the UI. - 🌍 localized in many languages - ➕ Plus tons more! - Flexible API @@ -39,7 +39,12 @@ Mealie is a self hosted recipe manager and meal planner with a RestAPI backend a An API allows integration into applications like [Home Assistant](https://www.home-assistant.io/) that can act as notification engines to provide custom notifications based of Meal Plan data to remind you to defrost the chicken, marinade the steak, or start the CrockPot. Additionally, you can access nearly any backend service via the API giving you total control to extend the application. To explore the API spin up your server and navigate to http://yourserver.com/docs for interactive API documentation. ### Why a Database? -Some users of static-site generator applications have expressed concerns about their data being stuck in a database. Considering this is a new project it is a valid concern to be worried about your data. Mealie specifically addresses this concern by provided automatic daily backups that export your data in json, plain-text markdown files, and/or custom Jinja2 templates. This puts you in controls of how your data is represented when exported from Mealie, which means you can easily migrate to any other service provided Mealie doesn't work for you. +Some users of static-site generator applications like ChowDown have expressed concerns about their data being stuck in a database. Considering this is a new project it is a valid concern to be worried about your data. Mealie specifically addresses this concern by provided automatic daily backups that export your data in json, plain-text markdown files, and/or custom Jinja2 templates. **This puts you in controls of how your data is represented** when exported from Mealie, which means you can easily migrate to any other service provided Mealie doesn't work for you. + +As to why we need a database? + +- **Developer Experience:** Without a database a lot of the work to maintain your data is taken on by the developer instead of a battle tested platform for storing data. +- **Multi User Support:** With a solid database as backend storage for your data Mealie can better support multi-user sites and avoid read/write access errors when multiple actions are taken at the same time. ## Built With diff --git a/docs/docs/getting-started/ios.md b/docs/docs/getting-started/ios.md index cef361cfe..e261eb6ea 100644 --- a/docs/docs/getting-started/ios.md +++ b/docs/docs/getting-started/ios.md @@ -1,5 +1,5 @@ # Using iOS Shortcuts with Mealie -{: align=right style="height:400px;width:400px"} +{: align=right style="height:400px;width:400px"} User [brasilikum](https://github.com/brasilikum) opened an issue on the main repo about how they had created an [iOS shortcut](https://github.com/hay-kot/mealie/issues/103) for interested users. This is a useful utility for iOS users who browse for recipes in their web browser from their devices. @@ -13,7 +13,7 @@ Don't know what an iOS shortcut is? Neither did I! Experienced iOS users may alr Basically it is a visual scripting language that lets a user build an automation in a guided fashion. The automation can be [shared with anyone](https://www.icloud.com/shortcuts/6ae356d5fc644cfa8983a3c90f242fbb) but if it is a user creation, you'll have to jump through a few hoops to make an untrusted automation work on your device. In brasilikum's shortcut, you need to make changes for it to work. Recent updates to the project have changed some of the syntax and folder structure since its original creation. -{: align=right style="height:500;width:400px"} +{: align=right style="height:500;width:400px"} diff --git a/docs/docs/getting-started/meal-planner.md b/docs/docs/getting-started/meal-planner.md index f8dbdc72d..7ea89b35f 100644 --- a/docs/docs/getting-started/meal-planner.md +++ b/docs/docs/getting-started/meal-planner.md @@ -9,5 +9,5 @@ To edit the meal in a meal plan simply select the edit button on the card in the ## Shopping Lists For any meal plan created you can view a breakdown of all the ingredients and use an experimental sort function to sort similarly ingredients. This is a very new feature and results of the auto sort may vary. - + diff --git a/docs/docs/getting-started/recipes.md b/docs/docs/getting-started/recipes.md index 5daa859a2..2ff318133 100644 --- a/docs/docs/getting-started/recipes.md +++ b/docs/docs/getting-started/recipes.md @@ -4,7 +4,7 @@ Adding a recipe can be as easy as copying the recipe URL into mealie and letting the web scrapper try to pull down the information. Currently this scraper is implemented with [scrape-schema-recipe package](https://pypi.org/project/scrape-schema-recipe/). You may have mixed results on some websites, especially with blogs or non specific recipe websites. See the bulk import Option below for another a convenient way to add blog style recipes into Mealie. - + ## Recipe Editor @@ -12,12 +12,12 @@ Recipes can be edited and created via the UI. This is done with both a form base You can also add a custom recipe with the UI editor built into the web view. - + ## Bulk Import Mealie also supports bulk import of recipe instructions and ingredients. Select "Bulk Add" in the editor and paste in your plain text data to be parsed. Each line is treated as one entry and will be appended to the existing ingredients or instructions if they exist. Empty lines will be stripped from the text. - + ## Schema Recipes are stored in the json-like format in mongoDB and then sent and edited in json format on the frontend. Each recipes uses [Recipe Schema](https://schema.org/Recipe) as a general guide with some additional properties specific to Mealie. diff --git a/docs/docs/getting-started/updating.md b/docs/docs/getting-started/updating.md index e0af54aa1..9a200153f 100644 --- a/docs/docs/getting-started/updating.md +++ b/docs/docs/getting-started/updating.md @@ -9,6 +9,10 @@ - Create a Backup and Download from the UI - Upgrade +## Backing Up Your Data + +[See Backups and Restore Section](/site-administration/backups-and-exports/) for details on backing up your data + ## Docker For all setups using Docker the updating process look something like this diff --git a/docs/docs/img/home_screenshot.png b/docs/docs/img/home_screenshot.png deleted file mode 100644 index df879acb0..000000000 Binary files a/docs/docs/img/home_screenshot.png and /dev/null differ diff --git a/docs/docs/overrides/home.html b/docs/docs/overrides/home.html index ad5e33989..de118b70d 100644 --- a/docs/docs/overrides/home.html +++ b/docs/docs/overrides/home.html @@ -225,7 +225,7 @@
- Quickly and easily import recipes from sites around the web using the built in recipe scrapper. + Quickly and easily import recipes from sites around the web using the built in recipe scrapper.
- Keep your data safe with automatic backups in any format supported by Jinja2 Templates + Keep your data safe with automatic backups in any format supported by Jinja2 templates
Use a beautiful and intuitive user interface to create, edit, and delete recipes
+Use a beautiful and intuitive user interface to create, edit, and delete recipes. Recipe editor supports markdown syntax
- Add new Users with sign-up links or simply create a new user in the admin panel. + Add new users with sign-up links or simply create a new user in the admin panel.
- Sort users into groups to share recipes with the whole family, but keep your Meal Plans separate + Sort users into groups to share recipes with the whole family, but keep your Meal Plans separate.
Schedule webhooks to send notifications to 3rd party services with todays Meal Plan
+Schedule webhooks to send notifications to 3rd party services with todays Meal Plan data.
API Driven application gives you full control of the backend server with interactive documentation
+API Driven application gives you full control of the backend server with interactive documentation