From 26ab22af7233a7609622c78cd4f5a703865f43dd Mon Sep 17 00:00:00 2001 From: hay-kot <64056131+hay-kot@users.noreply.github.com> Date: Sat, 2 Jan 2021 14:55:01 -0900 Subject: [PATCH 1/4] remove image --- docs/docs/img/admin-webhooks.png | Bin 34654 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/docs/img/admin-webhooks.png diff --git a/docs/docs/img/admin-webhooks.png b/docs/docs/img/admin-webhooks.png deleted file mode 100644 index f75f1cb7adf3a5c2d69f7aab67a881b0863dc24d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34654 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 Date: Sat, 2 Jan 2021 19:22:29 -0500 Subject: [PATCH 2/4] fixes typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 34dce75fd2a4..d647fb8f71ac 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ **Mealie** is a self hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in Vue for a pleasant user experience for the whole family. Easily add recipes into your database by providing the url and mealie will automatically import the relavent data or add a family recipe with the UI editor. -Melaie also provides a secure API for interactions from 3rd party applications. **Why does my recipe manager need an API?** An API allows integration into applications like [Home Assistant]() 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. See the section on [Meal Plan hooks](#hooks) for more information. Additionally, you can access any avaiable API from the backend server. To explore the API spin up your server and navigate to http://yourserver.com/docs for interactive API documentation. +Mealie also provides a secure API for interactions from 3rd party applications. **Why does my recipe manager need an API?** An API allows integration into applications like [Home Assistant]() 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. See the section on [Meal Plan hooks](#hooks) for more information. Additionally, you can access any avaiable API from the backend server. To explore the API spin up your server and navigate to http://yourserver.com/docs for interactive API documentation. From 6c294242b9b570c4bcfdfd4b420e2c57b7bb3c56 Mon Sep 17 00:00:00 2001 From: Hayden Date: Sat, 2 Jan 2021 17:20:21 -0900 Subject: [PATCH 3/4] updated docs --- README.md | 12 +---- docs/docs/1.0 - getting-started.md | 75 ++++++++++++++++++++++++++++-- docs/docs/1.1 - recipes.md | 2 +- docs/docs/1.3 - admin-panel.md | 10 ++-- docs/docs/1.9 - release-notes.md | 25 ++++++++++ docs/docs/2.0 - roadmap.md | 13 +++--- docs/docs/index.md | 24 +++++----- 7 files changed, 119 insertions(+), 42 deletions(-) create mode 100644 docs/docs/1.9 - release-notes.md diff --git a/README.md b/README.md index d647fb8f71ac..ae2cf9d445dd 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,6 @@ ## About The Project - [![Product Name Screen Shot][product-screenshot]](https://example.com) **Mealie** is a self hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in Vue for a pleasant user experience for the whole family. Easily add recipes into your database by providing the url and mealie will automatically import the relavent data or add a family recipe with the UI editor. @@ -58,8 +57,7 @@ Mealie also provides a secure API for interactions from 3rd party applications. - Expose notes in the API to allow external applications to access relavent information for meal plans #### Database Import / Export - Easily Import / Export your recipes from the UI - - Export recipes in markdown format for universal access - - Use the default or a custom jinja2 template + - Export recipes in into custom files using Jinja2 templates ### Built With @@ -70,14 +68,6 @@ Mealie also provides a secure API for interactions from 3rd party applications. * [Docker](https://www.docker.com/) -### Built With - -* [Vue.js](https://vuejs.org/) -* [Vuetify](https://vuetifyjs.com/en/) -* [FastAPI](https://fastapi.tiangolo.com/) -* [Docker](https://www.docker.com/) - - ## Contributing diff --git a/docs/docs/1.0 - getting-started.md b/docs/docs/1.0 - getting-started.md index 8b3ba39c75ca..65254aa34165 100644 --- a/docs/docs/1.0 - getting-started.md +++ b/docs/docs/1.0 - getting-started.md @@ -1,11 +1,24 @@ # Getting Started -To deploy docker on your local network it is highly recommended to use docker to deploy the image straight from dockerhub. Using the docker-compose below you should be able to get a stack up and running easily by changing a few default values and deploying. +To deploy docker on your local network it is highly recommended to use docker to deploy the image straight from dockerhub. Using the docker-compose below you should be able to get a stack up and running easily by changing a few default values and deploying. Currently the only supported database is mongo. + -Alternatively, this project is run in python. If you are deadset on deploying on a linux machine you can run this in an python enviromnet with a dedicated MongoDatabase. Provided that you know thats how you want to host the application, I'll assume you know how to do that. [Get Docker](https://docs.docker.com/get-docker/) -### Installation - Docker +[Mealie Docker Image](https://hub.docker.com/r/hkotel/mealie) + +## Env Variables + +| Variables | default | description | +| ----------- | ------- | ------------------------------------------------------------------------------------------------------------- | +| db_username | root | The Mongodb username you specified in your mongo container | +| db_password | example | The Mongodb password you specified in your mongo container | +| db_host | mongo | The host address of MongoDB if you're in docker and using the same network you can use mongo as the host name | +| db_port | 27017 | the port to access MongoDB 27017 is the default for mongo | +| TZ | | You should set your time zone accordingly so the date/time features work correctly | + + +## Docker Compose ```yaml # docker-compose.yml @@ -22,6 +35,7 @@ services: db_password: example # Your Mongo DB Password - Please Change db_host: mongo db_port: 27017 # The Default port for Mongo DB + TZ: America/Anchorage volumes: - ./data/img:/app/data/img - ./data/backups:/app/data/backups @@ -41,4 +55,57 @@ services: environment: ME_CONFIG_MONGODB_ADMINUSERNAME: root ME_CONFIG_MONGODB_ADMINPASSWORD: example -``` \ No newline at end of file +``` + +## Ansible Tasks Template + +```yaml +- name: ensures Mealie directory dir exists + file: + path: "{{ docker_dir }}/mealie/" + state: directory + owner: "{{ main_user}}" + group: "{{ main_group }}" + +- name: ensures Mealie directory dir exists + file: + path: "{{ docker_dir }}/mealie/" + state: directory + owner: "{{ main_user}}" + group: "{{ main_group }}" + +- name: Deploy Monogo Database + docker_container: + name: mealie-mongo + image: mongo + restart_policy: unless-stopped + networks: + - name: web + env: + MONGO_INITDB_ROOT_USERNAME: root + MONGO_INITDB_ROOT_PASSWORD: example + + +- name: deploy Mealie Docker Container + docker_container: + name: mealie + image: hkotel/mealie:latest + restart_policy: unless-stopped + ports: + - 9090:9000 + networks: + - name: web + mounts: + - type: bind + source: "{{ docker_dir }}/mealie" + target: /app/data + env: + db_username: root + db_password: example + db_host: mealie-mongo + db_port: "27017" + +``` + +## Deployed as a Python Application +Alternatively, this project is built on Python and Mongodb. If you are dead set on deploying on a linux machine you can run this in an python environment with a dedicated MongoDatabase. 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. \ No newline at end of file diff --git a/docs/docs/1.1 - recipes.md b/docs/docs/1.1 - recipes.md index c716ea4c22ea..a4cf6e41201d 100644 --- a/docs/docs/1.1 - recipes.md +++ b/docs/docs/1.1 - recipes.md @@ -1,7 +1,7 @@ # Recipes ## URL Import -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 convient way to add blog style recipes into Mealie. +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. ![](gifs/url-demo.gif) diff --git a/docs/docs/1.3 - admin-panel.md b/docs/docs/1.3 - admin-panel.md index 0b868f56cebc..57084d5c15b6 100644 --- a/docs/docs/1.3 - admin-panel.md +++ b/docs/docs/1.3 - admin-panel.md @@ -1,10 +1,10 @@ # Site Settings Panel !!! danger - As this is still a **BETA** It is reccomended that you backup your data often and store in more than one place. Adhear to backup best practies with the [3-2-1 Backup Rule](https://en.wikipedia.org/wiki/Backup) + As this is still a **BETA** It is recommended that you backup your data often and store in more than one place. Ad-hear to backup best practices with the [3-2-1 Backup Rule](https://en.wikipedia.org/wiki/Backup) ## Theme Settings -Color themes can be created and set from the UI in the settings page. You can select an existing color theme or create a new one. On creation of a new color theme random colors will first be generated, then you can select and save as you'd like. By default the "default" theme will be loaded for all new users visiting the site. All created color themes are avaiable to all users of the site. Seperate color themes can be set for both Light and Dark modes. +Color themes can be created and set from the UI in the settings page. You can select an existing color theme or create a new one. On creation of a new color theme random colors will first be generated, then you can select and save as you'd like. By default the "default" theme will be loaded for all new users visiting the site. All created color themes are available to all users of the site. Separate color themes can be set for both Light and Dark modes. ![](gifs/theme-demo.gif) @@ -22,12 +22,10 @@ To import a backup it must be in your backups folder. If it is in the backup fol ![](img/admin-backup.png) ## Meal Planner Webhooks -Meal planner webhooks are post requests sent from Mealie to an external endpoint. The body of the message is the Recipe JSON of the scheduled meal. If no meal is schedule, no request is sent. The webhook functionality can be enabled or disabled as well as scheduled. Note that you must "Save Webhooks" prior to any changes taking affect serverside. - -![](img/admin-webhooks.png) +Meal planner webhooks are post requests sent from Mealie to an external endpoint. The body of the message is the Recipe JSON of the scheduled meal. If no meal is schedule, no request is sent. The webhook functionality can be enabled or disabled as well as scheduled. Note that you must "Save Webhooks" prior to any changes taking affect server side. ## Migration ### Chowdown -In the Admin page on the in the Migration section you can provide a URL for a repo hosting a Chowdown site and Mealie will pull the images and recipes from the instance and automatically import them into the database. Due to the nature of the yaml format you may have mixed results but you should get an error report of the recipes that had errors and will need to be manually added. +In the Admin page on the in the Migration section you can provide a URL for a repo hosting a Chowdown site and Mealie will pull the images and recipes from the instance and automatically import them into the database. Due to the nature of the yaml format you may have mixed results but you should get an error report of the recipes that had errors and will need to be manually added. Note that you can only import the repo as a whole. You cannot import individual recipes. diff --git a/docs/docs/1.9 - release-notes.md b/docs/docs/1.9 - release-notes.md new file mode 100644 index 000000000000..b4e1d1793fe6 --- /dev/null +++ b/docs/docs/1.9 - release-notes.md @@ -0,0 +1,25 @@ +# Release Notes + +## v0.0.0 - Initial Pre-release +The initial pre-release. It should be semi-functional but does not include a lot of user feedback You may notice errors that have no user feedback and have no idea what went wrong. + +### Recipes + - Automatic web scrapping for common recipe platforms + - Interactive API Documentation thanks to [FastAPI](https://fastapi.tiangolo.com/) and [Swagger](https://petstore.swagger.io/) + - UI Recipe Editor + - JSON Recipe Editor in browser + - Custom tags and categories + - Rate recipes + - Add notes to recipes + - Migration From Other Platforms + - Chowdown + - Open Eats - **Coming Soon** + - +### Meal Planner + - Random Meal plan generation based off categories + - Expose notes in the API to allow external applications to access relevant information for meal plans + +### Database Import / Export + - Easily Import / Export your recipes from the UI + - Export recipes in markdown format for universal access + - Use the default or a custom jinja2 template \ No newline at end of file diff --git a/docs/docs/2.0 - roadmap.md b/docs/docs/2.0 - roadmap.md index d1985e41ec84..788a242f15ea 100644 --- a/docs/docs/2.0 - roadmap.md +++ b/docs/docs/2.0 - roadmap.md @@ -1,8 +1,12 @@ # Development Road Map +!!! Current Release + v0.0.0 ALPHA - This is technically a pre-release, as such there are no release notes and no version. The first version will be version v0.1.0 and will provide a list of release notes with any breaking changes + + Feature placement is not set in stone. This is much more of a guideline than anything else. -## v1.0 Roadmad +## v1.0 Road Map ### Frontend - [ ] Login / Logout Navigation @@ -17,7 +21,7 @@ Feature placement is not set in stone. This is much more of a guideline than any * [ ] User Accounts * [ ] Edit / Delete -## v0.2.0 +## v0.1.0 ### Front End - [ ] Recipe Editor @@ -40,8 +44,3 @@ Feature placement is not set in stone. This is much more of a guideline than any - [ ] Backup Options * [ ] Force Update * [ ] Rebuild - - - - - diff --git a/docs/docs/index.md b/docs/docs/index.md index 25a9719f3503..f8aef0f97305 100644 --- a/docs/docs/index.md +++ b/docs/docs/index.md @@ -14,9 +14,9 @@ ![Product Name Screen Shot][product-screenshot] -**Mealie** is a self hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in Vue for a pleasant user experience for the whole family. Easily add recipes into your database by providing the url and mealie will automatically import the relavent data or add a family recipe with the UI editor. +**Mealie** is a self hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in Vue for a pleasant user experience for the whole family. Easily add recipes into your database by providing the url and mealie will automatically import the relevant data or add a family recipe with the UI editor. -Melaie also provides a secure API for interactions from 3rd party applications. **Why does my recipe manager need an API?** 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 any avaiable API from the backend server. To explore the API spin up your server and navigate to http://yourserver.com/docs for interactive API documentation. +Mealie also provides an API for interactions from 3rd party applications. **Why does my recipe manager need an API?** 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 any available API from the backend server. To explore the API spin up your server and navigate to http://yourserver.com/docs for interactive API documentation. !!! note In some of the demo gifs the styling may be different than the finale application. demos were done during development prior to finale styling. @@ -35,9 +35,13 @@ Melaie also provides a secure API for interactions from 3rd party applications. - Custom tags and categories - Rate recipes - Add notes to recipes + - Migration From Other Platforms + - Chowdown + - Open Eats - **Coming Soon** #### Meal Planner - Random Meal plan generation based off categories - - Expose notes in the API to allow external applications to access relavent information for meal plans + - Expose notes in the API to allow external applications to access relevant information for meal plans + #### Database Import / Export - Easily Import / Export your recipes from the UI - Export recipes in markdown format for universal access @@ -54,17 +58,9 @@ Melaie also provides a secure API for interactions from 3rd party applications. -## Roadmap +## Road Map -#### Authentication - Target 1.0 -- User Login -- Token Based API Access/Auth - -#### Recipe Sharing -- Share Button / Email -- Export to PDF -- Print Button -- Git Repo Based Sharing (Import / Export / Search) +[See Roadmap](2.0 - roadmap) @@ -73,6 +69,8 @@ Melaie also provides a secure API for interactions from 3rd party applications. Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**. Especially test. Literally any tests. +If you are not a coder, you can still contribute financially. financial contributions help me prioritize working on this project over others and helps me know that there is a real demand for the project. + Buy Me A Coffee From 9f57a3d37f2b65c1eb5675fdc93c914ba5ae6b53 Mon Sep 17 00:00:00 2001 From: Hayden Date: Sat, 2 Jan 2021 17:22:25 -0900 Subject: [PATCH 4/4] remove empty line --- docs/docs/1.9 - release-notes.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/docs/1.9 - release-notes.md b/docs/docs/1.9 - release-notes.md index b4e1d1793fe6..7264f9d8185d 100644 --- a/docs/docs/1.9 - release-notes.md +++ b/docs/docs/1.9 - release-notes.md @@ -13,8 +13,6 @@ The initial pre-release. It should be semi-functional but does not include a lot - Add notes to recipes - Migration From Other Platforms - Chowdown - - Open Eats - **Coming Soon** - - ### Meal Planner - Random Meal plan generation based off categories - Expose notes in the API to allow external applications to access relevant information for meal plans