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

Overview

Contributors Forks Stargazers Issues MIT License Docker Pulls CodeFactor Docker Build Production Project Tests Production Docker Build Dev Project Tests Dev


Mealie

A Place for All Your Recipes
Explore the docs »
View Demo · Report Bug · API · Request Feature · Docker Hub

Product Name Screen Shot

About The Project

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. Mealie also provides an API for interactions from 3rd party applications.

Remember to join the Discord!

Key Features

  • 🔍 Fuzzy search
  • 🏷️ Tag recipes with categories or tags for flexible sorting
  • 🕸 Import recipes from around the web by URL
  • 💪 Powerful bulk Category/Tag assignment
  • 📱 Beautiful Mobile Views
  • 📆 Create Meal Plans
  • 🛒 Generate shopping lists
  • 🐳 Easy setup with Docker
  • 🎨 Customize your interface with color themes
  • 💾 Export all your data in any format with Jinja2 Templates
  • 🔒 Keep your data safe with automated backup and easy restore options
  • 🌍 localized in many languages
  • Plus tons more!
    • Flexible API
      • Custom key/value pairs for recipes
      • Webhook support
      • Interactive API Documentation thanks to FastAPI and Swagger
    • Raw JSON Recipe Editor
    • Migration from other platforms
      • Chowdown
      • Nextcloud Cookbook
    • Random meal plan generation

FAQ

Why 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. 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 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.

Contributing

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. See the Contributors Guide for help getting started.

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 project development.

Buy Me A Coffee

License

Distributed under the MIT License. See LICENSE for more information.

Contact

Project Link: https://github.com/hay-kot/mealie

Comments
  • [META] Feature Requests

    [META] Feature Requests

    To avoid duplicate feature request and cluttering of the issue tracker, please comment any feature requests here and I'll keep a list.

    Tag Key

    ✔️ = Completed pending new release ⭐ = Actively being worked on 🗺️ = On the Road Map 🤚 = Requesting PR or Help ❌ = Unlikely to implemented, open to community support

    Authentication

    • [x] General User Authentication
    • [ ] Secure API w/ Long Live Tokens

    Database Support

    • [x] SQLite Support
    • [ ] Postgres Support 🗺️ - Target 0.4.1 (Post Authentication Patch)

    General

    • [x] Expanded Search Support
      • [x] Search Description
    • [x] Recipe Categories on Homepage
    • [x] Sort/Filter
      • [x] By Date
      • [x] By Category
      • [x] By Tag
      • [x] Alphabetical

    Recipe

    • [ ] Upload Image from URL ✔️
    • [ ] Add All Schema.org items to Database Entry
    • [ ] Add Waiting Time to Recipe
    • [ ] Add Hardware/Tool requirements
    • [x] Group Categories on Frontend
      • [x] Side-Bar Groups
    • [ ] Bulk Category Management
      • [ ] View Uncategorized Recipes
      • [ ] Assign Categories in Bulk
    • [ ] Calculate Nutrition Data - Discussion
    • [ ] Printer Page 🤚
    • [x] Markdown Support
    • [ ] Multiple Ingredients and Instruction Groups 🤚
    • [ ] Adding Flavor Profile 🗺️
    • [ ] Private/Public Recipes 🗺️
    • [ ] Version Control ❌
    • [ ] Add image support for recipe steps

    Editor

    • [x] Scrollable Tag / Category Selector
    • [x] Add Field for URL when manually adding a recipe
    • [x] Insert ingredient anywhere in ingredients list (Ingredients can now be moved in the editor. via drag-and-drop)

    Meal Planner

    • [x] Generate mealplan Based on Rules
    • [x] Auto Set Start/End date in Meal Planner
    • [x] Auto Generate Shopping List
    • [ ] Multiple Recipes per Day 🗺️
    • [ ] Leftovers / Ordering out Option - Discussion 🗺️

    Migration from Other Apps

    If anyone wants to help implement any of these features, I am available on the discord to help as much as I can.

    enhancement 
    opened by hay-kot 72
  • Separate units and ingredients, add scaling

    Separate units and ingredients, add scaling

    There could be a scale option, default to 1x, that could change how much of each ingredient is needed. For example, instead of

    Ingredients:
    "1 cup flour",
    "1/2 cup butter"
    

    It could be

    Scale: 1.0
    Ingredients: [
      {  Name: "butter",
          Amount: 0.5,
          Unit: "cup",
          Plural: "cups",
          Extra: "melted"
      },
    Etc
    ] 
    

    Which displays as

    {{Scale*amount}} {{unit(if >=2, plural}} {{name}} ({{extra}}) i.e. 1/2 cup butter (melted)

    enhancement help wanted discussion 
    opened by TeddOravec 23
  • I created an iOS shortcut to add recipes by url

    I created an iOS shortcut to add recipes by url

    https://www.icloud.com/shortcuts/6ae356d5fc644cfa8983a3c90f242fbb

    It’s not much, but it parses the url out if it’s a message and url and sends it to your instance. You can configure the IP at import.

    Maybe you want to put it somewhere in the docs.

    opened by brasilikum 22
  • Latest update (0.5.2) everything is gone

    Latest update (0.5.2) everything is gone

    Describe the bug After upgrading my UNRAID docker to 0.5.2, all my recipes and are gone. I call login using my previous credentials, but none of the menu items take me anywhere and the main page remains blank. I tried deleting the docker, installing fresh and restoring from a backup (taken just prior to updating), and again I can login with my previous creds but nothing is there. The menu items also look incorrect (as per screen shot).

    Logs attached ('mealie.log' was inside docker directory, 'Log for Mealie.txt' was from unraid docker tab)

    Really hope I don't have to start again as I don't think I could be bothered and will just move on...

    • OS: Unraid docker
    • Deployment: [e.g., Docker-version, docker-compose, Python application]
    • Browser: Firefox, Edge
    • Version: 0.5.2

    Capture mealie.log Log for Mealie.txt

    bug 
    opened by rich1110 20
  • Container running as root user

    Container running as root user

    I have tried to deploy with: securityContext: runAsNonRoot: true

    this has resulted into groupmode error

    Expected behavior Container and application should run fine.

    Actual Behavior container fails with following error: Production groupmod: Permission denied. groupmod: cannot lock /etc/group; try again later.

    Device Information (please complete the following information):

    • OS: Ubuntu 20.04
    • Deployment: Microk8s
    bug help wanted 
    opened by usma0118 19
  • Add LDAP authentication support

    Add LDAP authentication support

    This is a minimal PR adding support for authentication via LDAP by trying to bind to an LDAP server if internal Mealie authentication fails. If the user is on the LDAP server but not in the Mealie database, a new user object is inserted into the database.

    I've made no UI changes as they aren't strictly necessary, but they might be useful, like disabling password changes for LDAP users altogether or checking the current password also via LDAP.

    opened by dvdkon 18
  • Sudden 1.7TB .fuse_hidden file in backup directory

    Sudden 1.7TB .fuse_hidden file in backup directory

    Describe the bug

    A large .fuse_hidden files is produced in the backups directory. Restarting the Mealie docker container clears the file. I have only four recipes so far in my testing. A normal zip backup is produced fine in this folder as well. Mealie has just been sitting idle on my unraid server for a few weeks when this happened.

    Steps To Reproduce Unknown, have yet to reproduce after container restart. Mealie was sitting idle for quite a while beforehand.

    Expected behavior Normal zip backup files only in the backup directory.

    Actual Behavior Normal zip backup file is produce, a massive fuse_hidden file is created also.(not reproduced yet)

    Screenshots

    image

    Device Information (please complete the following information):

    • OS: Unraid 6.9.2
    • Deployment: Docker Repo:hkotel/mealie
    • Browser: Firefox
    • Version: 0.5.2

    Additional context With the file disappearing on the Mealie container being restarted it would seem that mealie was holding a lock on the file for it to not be removed correctly. Unsure why it would generate a 1.7TB file to begin with since I only have 4 recipes.

    Log attached, can't see anything in there that would indicate it made the file. I shall leave it idle again for a while to see if another file is produce. What steps should I be doing to give you more information if the issue is reproduced before I restart the container? mealie.log

    bug 
    opened by MisterTeknis 17
  • [v1.0.0b] - Registering a user and creating group not functioning.

    [v1.0.0b] - Registering a user and creating group not functioning.

    First Check

    • [X] This is not a feature request
    • [X] I added a very descriptive title to this issue.
    • [X] I used the GitHub search to find a similar issue and didn't find it.
    • [X] I searched the Mealie documentation, with the integrated search.
    • [X] I already read the docs and didn't find an answer.

    What is the issue you are experiencing?

    When registering a new user, the creation of it does not work. I get the below logs

    Logs
    INFO: 23-Feb-22 10:14:41 	Registering user matthias
    172.18.0.10:55976 - "POST /api/users/register HTTP/1.1" 500
    [2022-02-23 10:14:41 +0100] [29] [ERROR] Exception in ASGI application
    Traceback (most recent call last):
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1802, in _execute_context
        self.dialect.do_execute(
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 732, in do_execute
        cursor.execute(statement, parameters)
    sqlite3.IntegrityError: UNIQUE constraint failed: groups.name
    
    The above exception was the direct cause of the following exception:
    
    Traceback (most recent call last):
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/uvicorn/protocols/http/httptools_impl.py", line 398, in run_asgi
        result = await app(self.scope, self.receive, self.send)
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
        return await self.app(scope, receive, send)
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/fastapi/applications.py", line 208, in __call__
        await super().__call__(scope, receive, send)
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/starlette/applications.py", line 112, in __call__
        await self.middleware_stack(scope, receive, send)
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/starlette/middleware/errors.py", line 181, in __call__
        raise exc
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/starlette/middleware/errors.py", line 159, in __call__
        await self.app(scope, receive, _send)
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/starlette/middleware/gzip.py", line 23, in __call__
        await responder(scope, receive, send)
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/starlette/middleware/gzip.py", line 42, in __call__
        await self.app(scope, receive, self.send_with_gzip)
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/starlette/exceptions.py", line 82, in __call__
        raise exc
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/starlette/exceptions.py", line 71, in __call__
        await self.app(scope, receive, sender)
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/starlette/routing.py", line 656, in __call__
        await route.handle(scope, receive, send)
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/starlette/routing.py", line 259, in handle
        await self.app(scope, receive, send)
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/starlette/routing.py", line 61, in app
        response = await func(request)
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/fastapi/routing.py", line 226, in app
        raw_response = await run_endpoint_function(
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/fastapi/routing.py", line 161, in run_endpoint_function
        return await run_in_threadpool(dependant.call, **values)
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/starlette/concurrency.py", line 39, in run_in_threadpool
        return await anyio.to_thread.run_sync(func, *args)
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/anyio/to_thread.py", line 28, in run_sync
        return await get_asynclib().run_sync_in_worker_thread(func, *args, cancellable=cancellable,
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/anyio/_backends/_asyncio.py", line 818, in run_sync_in_worker_thread
        return await future
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/anyio/_backends/_asyncio.py", line 754, in run
        result = context.run(func, *args)
      File "/app/mealie/routes/users/registration.py", line 17, in register_new_user
        return registration_service.register_user(data)
      File "/app/mealie/services/user_services/registration_service.py", line 63, in register_user
        group = self._register_new_group()
      File "/app/mealie/services/user_services/registration_service.py", line 52, in _register_new_group
        return create_new_group(self.repos, group_data, group_preferences)
      File "/app/mealie/services/group_services/group_utils.py", line 9, in create_new_group
        created_group = db.groups.create(g_base)
      File "/app/mealie/repos/repository_generic.py", line 226, in create
        self.session.commit()
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 1431, in commit
        self._transaction.commit(_to_root=self.future)
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 829, in commit
        self._prepare_impl()
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 808, in _prepare_impl
        self.session.flush()
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 3363, in flush
        self._flush(objects)
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 3502, in _flush
        with util.safe_reraise():
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__
        compat.raise_(
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/sqlalchemy/util/compat.py", line 207, in raise_
        raise exception
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 3463, in _flush
        flush_context.execute()
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/sqlalchemy/orm/unitofwork.py", line 456, in execute
        rec.execute(self)
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/sqlalchemy/orm/unitofwork.py", line 630, in execute
        util.preloaded.orm_persistence.save_obj(
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/sqlalchemy/orm/persistence.py", line 244, in save_obj
        _emit_insert_statements(
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/sqlalchemy/orm/persistence.py", line 1221, in _emit_insert_statements
        result = connection._execute_20(
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1614, in _execute_20
        return meth(self, args_10style, kwargs_10style, execution_options)
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 325, in _execute_on_connection
        return connection._execute_clauseelement(
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1481, in _execute_clauseelement
        ret = self._execute_context(
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1845, in _execute_context
        self._handle_dbapi_exception(
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 2026, in _handle_dbapi_exception
        util.raise_(
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/sqlalchemy/util/compat.py", line 207, in raise_
        raise exception
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1802, in _execute_context
        self.dialect.do_execute(
      File "/opt/pysetup/.venv/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 732, in do_execute
        cursor.execute(statement, parameters)
    sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: groups.name
    [SQL: INSERT INTO groups (created_at, update_at, id, name) VALUES (?, ?, ?, ?)]
    [parameters: ('2022-02-23 10:14:41.923813', '2022-02-23 10:14:41.923819', '170b61f6db214015b12a21d2e90778a0', 'thuis')]
    (Background on this error at: https://sqlalche.me/e/14/gkpj)
    
    

    Deployment

    Docker (Linux)

    Deployment Details

    No response

    bug v1 
    opened by zierbeek 16
  • Upgraded to 0.5.2 everything blank

    Upgraded to 0.5.2 everything blank

    I've just pulled the latest docker image and all my recipes have gone and I am unable to login and receive a "Could Not Validate Credentials" error when logging in. The "changeme" account didn't work either.

    Thankfully using docker so rolled back to v0.5.1 and everything has loaded again.

    opened by sfgrabowski 16
  • First-time docker run causes database error

    First-time docker run causes database error

    on both the latest and dev tag: docker run -d --name='mealie' -v '/my/path/to/mealie':'/app/data':'rw' 'hkotel/mealie:latest'

    [2021-01-19 10:45:57 -0500] [11] [INFO] Worker exiting (pid: 11)
    [2021-01-19 10:45:57 -0500] [12] [ERROR] Exception in worker process
    
    Traceback (most recent call last):
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
    self.dialect.do_execute(
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 609, in do_execute
    cursor.execute(statement, parameters)
    sqlite3.OperationalError: table meal already exists
    
    The above exception was the direct cause of the following exception:
    
    Traceback (most recent call last):
    File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
    worker.init_process()
    File "/usr/local/lib/python3.8/site-packages/uvicorn/workers.py", line 63, in init_process
    super(UvicornWorker, self).init_process()
    File "/usr/local/lib/python3.8/site-packages/gunicorn/workers/base.py", line 119, in init_process
    self.load_wsgi()
    File "/usr/local/lib/python3.8/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi
    self.wsgi = self.app.wsgi()
    File "/usr/local/lib/python3.8/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
    File "/usr/local/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 49, in load
    return self.load_wsgiapp()
    File "/usr/local/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp
    return util.import_app(self.app_uri)
    File "/usr/local/lib/python3.8/site-packages/gunicorn/util.py", line 358, in import_app
    mod = importlib.import_module(module)
    File "/usr/local/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
    File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
    File "<frozen importlib._bootstrap>", line 991, in _find_and_load
    File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
    File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
    File "<frozen importlib._bootstrap_external>", line 783, in exec_module
    File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
    File "/app/app.py", line 7, in <module>
    from routes import (
    File "/app/routes/backup_routes.py", line 6, in <module>
    from services.backups.exports import backup_all
    File "/app/services/backups/exports.py", line 7, in <module>
    from services.meal_services import MealPlan
    File "/app/services/meal_services.py", line 5, in <module>
    from db.database import db
    File "/app/db/database.py", line 1, in <module>
    from db.db_mealplan import _Meals
    File "/app/db/db_mealplan.py", line 6, in <module>
    from db.db_setup import USE_MONGO, USE_SQL
    File "/app/db/db_setup.py", line 9, in <module>
    sql_global_init(SQLITE_FILE)
    File "/app/db/sql/db_session.py", line 26, in globa_init
    SqlAlchemyBase.metadata.create_all(engine)
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/sql/schema.py", line 4553, in create_all
    bind._run_visitor(
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 2095, in _run_visitor
    conn._run_visitor(visitorcallable, element, **kwargs)
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1656, in _run_visitor
    visitorcallable(self.dialect, self, **kwargs).traverse_single(element)
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/sql/visitors.py", line 145, in traverse_single
    return meth(obj, **kw)
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/sql/ddl.py", line 783, in visit_metadata
    self.traverse_single(
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/sql/visitors.py", line 145, in traverse_single
    return meth(obj, **kw)
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/sql/ddl.py", line 827, in visit_table
    self.connection.execute(
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1011, in execute
    return meth(self, multiparams, params)
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/sql/ddl.py", line 72, in _execute_on_connection
    return connection._execute_ddl(self, multiparams, params)
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1068, in _execute_ddl
    ret = self._execute_context(
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1316, in _execute_context
    self._handle_dbapi_exception(
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1510, in _handle_dbapi_exception
    util.raise_(
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 182, in raise_
    raise exception
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
    {"loglevel": "info", "workers": 40, "bind": "0.0.0.0:80", "graceful_timeout": 120, "timeout": 120, "keepalive": 5, "errorlog": "-", "accesslog": "-", "workers_per_core": 1.0, "use_max_workers": null, "host": "0.0.0.0", "port": "80"}
    self.dialect.do_execute(
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 609, in do_execute
    cursor.execute(statement, parameters)
    sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) table meal already exists
    [SQL:
    CREATE TABLE meal (
    id INTEGER NOT NULL,
    parent_id VARCHAR,
    slug VARCHAR,
    name VARCHAR,
    date DATE,
    "dateText" VARCHAR,
    image VARCHAR,
    description VARCHAR,
    PRIMARY KEY (id),
    FOREIGN KEY(parent_id) REFERENCES mealplan (uid)
    )
    
    ]
    (Background on this error at: http://sqlalche.me/e/13/e3q8)
    
    [2021-01-19 10:45:57 -0500] [12] [INFO] Worker exiting (pid: 12)
    [2021-01-19 10:45:57 -0500] [35] [INFO] Booting worker with pid: 35
    [2021-01-19 10:45:57 -0500] [9] [ERROR] Exception in worker process
    
    Traceback (most recent call last):
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
    self.dialect.do_execute(
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 609, in do_execute
    cursor.execute(statement, parameters)
    sqlite3.OperationalError: table mealplan already exists
    
    The above exception was the direct cause of the following exception:
    
    Traceback (most recent call last):
    File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
    worker.init_process()
    File "/usr/local/lib/python3.8/site-packages/uvicorn/workers.py", line 63, in init_process
    super(UvicornWorker, self).init_process()
    File "/usr/local/lib/python3.8/site-packages/gunicorn/workers/base.py", line 119, in init_process
    self.load_wsgi()
    File "/usr/local/lib/python3.8/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi
    self.wsgi = self.app.wsgi()
    File "/usr/local/lib/python3.8/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
    File "/usr/local/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 49, in load
    return self.load_wsgiapp()
    File "/usr/local/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp
    return util.import_app(self.app_uri)
    File "/usr/local/lib/python3.8/site-packages/gunicorn/util.py", line 358, in import_app
    mod = importlib.import_module(module)
    File "/usr/local/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
    File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
    File "<frozen importlib._bootstrap>", line 991, in _find_and_load
    File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
    File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
    File "<frozen importlib._bootstrap_external>", line 783, in exec_module
    File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
    File "/app/app.py", line 7, in <module>
    from routes import (
    File "/app/routes/backup_routes.py", line 6, in <module>
    from services.backups.exports import backup_all
    File "/app/services/backups/exports.py", line 7, in <module>
    from services.meal_services import MealPlan
    File "/app/services/meal_services.py", line 5, in <module>
    from db.database import db
    File "/app/db/database.py", line 1, in <module>
    from db.db_mealplan import _Meals
    File "/app/db/db_mealplan.py", line 6, in <module>
    from db.db_setup import USE_MONGO, USE_SQL
    File "/app/db/db_setup.py", line 9, in <module>
    sql_global_init(SQLITE_FILE)
    File "/app/db/sql/db_session.py", line 26, in globa_init
    SqlAlchemyBase.metadata.create_all(engine)
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/sql/schema.py", line 4553, in create_all
    bind._run_visitor(
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 2095, in _run_visitor
    conn._run_visitor(visitorcallable, element, **kwargs)
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1656, in _run_visitor
    visitorcallable(self.dialect, self, **kwargs).traverse_single(element)
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/sql/visitors.py", line 145, in traverse_single
    return meth(obj, **kw)
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/sql/ddl.py", line 783, in visit_metadata
    {"loglevel": "info", "workers": 40, "bind": "0.0.0.0:80", "graceful_timeout": 120, "timeout": 120, "keepalive": 5, "errorlog": "-", "accesslog": "-", "workers_per_core": 1.0, "use_max_workers": null, "host": "0.0.0.0", "port": "80"}
    self.traverse_single(
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/sql/visitors.py", line 145, in traverse_single
    return meth(obj, **kw)
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/sql/ddl.py", line 827, in visit_table
    self.connection.execute(
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1011, in execute
    return meth(self, multiparams, params)
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/sql/ddl.py", line 72, in _execute_on_connection
    return connection._execute_ddl(self, multiparams, params)
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1068, in _execute_ddl
    ret = self._execute_context(
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1316, in _execute_context
    self._handle_dbapi_exception(
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1510, in _handle_dbapi_exception
    util.raise_(
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 182, in raise_
    raise exception
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
    self.dialect.do_execute(
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 609, in do_execute
    cursor.execute(statement, parameters)
    sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) table mealplan already exists
    [SQL:
    CREATE TABLE mealplan (
    uid INTEGER NOT NULL,
    "startDate" DATE,
    "endDate" DATE,
    PRIMARY KEY (uid),
    UNIQUE (uid)
    )
    
    ]
    (Background on this error at: http://sqlalche.me/e/13/e3q8)
    
    [2021-01-19 10:45:57 -0500] [9] [INFO] Worker exiting (pid: 9)
    [2021-01-19 10:45:57 -0500] [14] [ERROR] Exception in worker process
    
    Traceback (most recent call last):
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
    self.dialect.do_execute(
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 609, in do_execute
    cursor.execute(statement, parameters)
    sqlite3.OperationalError: table meal already exists
    
    The above exception was the direct cause of the following exception:
    
    Traceback (most recent call last):
    File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
    worker.init_process()
    File "/usr/local/lib/python3.8/site-packages/uvicorn/workers.py", line 63, in init_process
    super(UvicornWorker, self).init_process()
    File "/usr/local/lib/python3.8/site-packages/gunicorn/workers/base.py", line 119, in init_process
    self.load_wsgi()
    File "/usr/local/lib/python3.8/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi
    self.wsgi = self.app.wsgi()
    File "/usr/local/lib/python3.8/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
    File "/usr/local/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 49, in load
    return self.load_wsgiapp()
    File "/usr/local/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp
    return util.import_app(self.app_uri)
    File "/usr/local/lib/python3.8/site-packages/gunicorn/util.py", line 358, in import_app
    mod = importlib.import_module(module)
    File "/usr/local/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
    File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
    File "<frozen importlib._bootstrap>", line 991, in _find_and_load
    File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
    File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
    File "<frozen importlib._bootstrap_external>", line 783, in exec_module
    File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
    File "/app/app.py", line 7, in <module>
    from routes import (
    File "/app/routes/backup_routes.py", line 6, in <module>
    from services.backups.exports import backup_all
    File "/app/services/backups/exports.py", line 7, in <module>
    from services.meal_services import MealPlan
    File "/app/services/meal_services.py", line 5, in <module>
    from db.database import db
    File "/app/db/database.py", line 1, in <module>
    from db.db_mealplan import _Meals
    File "/app/db/db_mealplan.py", line 6, in <module>
    from db.db_setup import USE_MONGO, USE_SQL
    File "/app/db/db_setup.py", line 9, in <module>
    sql_global_init(SQLITE_FILE)
    File "/app/db/sql/db_session.py", line 26, in globa_init
    SqlAlchemyBase.metadata.create_all(engine)
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/sql/schema.py", line 4553, in create_all
    bind._run_visitor(
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 2095, in _run_visitor
    conn._run_visitor(visitorcallable, element, **kwargs)
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1656, in _run_visitor
    visitorcallable(self.dialect, self, **kwargs).traverse_single(element)
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/sql/visitors.py", line 145, in traverse_single
    return meth(obj, **kw)
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/sql/ddl.py", line 783, in visit_metadata
    self.traverse_single(
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/sql/visitors.py", line 145, in traverse_single
    return meth(obj, **kw)
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/sql/ddl.py", line 827, in visit_table
    self.connection.execute(
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1011, in execute
    return meth(self, multiparams, params)
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/sql/ddl.py", line 72, in _execute_on_connection
    return connection._execute_ddl(self, multiparams, params)
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1068, in _execute_ddl
    ret = self._execute_context(
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1316, in _execute_context
    self._handle_dbapi_exception(
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1510, in _handle_dbapi_exception
    util.raise_(
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 182, in raise_
    raise exception
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
    self.dialect.do_execute(
    File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 609, in do_execute
    cursor.execute(statement, parameters)
    sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) table meal already exists
    [SQL:
    CREATE TABLE meal (
    id INTEGER NOT NULL,
    parent_id VARCHAR,
    slug VARCHAR,
    name VARCHAR,
    date DATE,
    "dateText" VARCHAR,
    {"loglevel": "info", "workers": 40, "bind": "0.0.0.0:80", "graceful_timeout": 120, "timeout": 120, "keepalive": 5, "errorlog": "-", "accesslog": "-", "workers_per_core": 1.0, "use_max_workers": null, "host": "0.0.0.0", "port": "80"}
    image VARCHAR,
    description VARCHAR,
    PRIMARY KEY (id),
    FOREIGN KEY(parent_id) REFERENCES mealplan (uid)
    )
    
    ]
    (Background on this error at: http://sqlalche.me/e/13/e3q8)
    
    [2021-01-19 10:45:57 -0500] [14] [INFO] Worker exiting (pid: 14)
    [2021-01-19 10:45:57 -0500] [36] [INFO] Booting worker with pid: 36
    [2021-01-19 10:45:57 -0500] [37] [INFO] Booting worker with pid: 37
    [2021-01-19 10:45:57 -0500] [38] [INFO] Booting worker with pid: 38
    {"loglevel": "info", "workers": 40, "bind": "0.0.0.0:80", "graceful_timeout": 120, "timeout": 120, "keepalive": 5, "errorlog": "-", "accesslog": "-", "workers_per_core": 1.0, "use_max_workers": null, "host": "0.0.0.0", "port": "80"}
    Traceback (most recent call last):
    File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 202, in run
    self.manage_workers()
    File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 545, in manage_workers
    self.spawn_workers()
    File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 617, in spawn_workers
    time.sleep(0.1 * random.random())
    File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 242, in handle_chld
    self.reap_workers()
    File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 525, in reap_workers
    raise HaltServer(reason, self.WORKER_BOOT_ERROR)
    gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
    
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
    File "/usr/local/bin/gunicorn", line 8, in <module>
    sys.exit(run())
    File "/usr/local/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 58, in run
    WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()
    File "/usr/local/lib/python3.8/site-packages/gunicorn/app/base.py", line 228, in run
    super().run()
    File "/usr/local/lib/python3.8/site-packages/gunicorn/app/base.py", line 72, in run
    Arbiter(self).run()
    File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 229, in run
    self.halt(reason=inst.reason, exit_status=inst.exit_status)
    File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 342, in halt
    self.stop()
    File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 393, in stop
    time.sleep(0.1)
    File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 242, in handle_chld
    self.reap_workers()
    File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 531, in reap_workers
    if not worker:
    File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 242, in handle_chld
    self.reap_workers()
    File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 525, in reap_workers
    raise HaltServer(reason, self.WORKER_BOOT_ERROR)
    

    On the second attempt the container starts up correctly. I'm assuming there is an issue wtih the sql scripts executed when no db is found. Maybe a "CREATE IF NOT EXISTS" is missing somewhere?

    fixed-pending-release 
    opened by FoxxMD 16
  • Bring OCR to Mealie for importing scanned recipes

    Bring OCR to Mealie for importing scanned recipes

    Added so far

    • New tab in the recipe creation page for scanned recipes (I'm open for the icon that should be used)
    • ~~As a first draft, the recipe is created with the recognized text in the description field to copy and paste later in edit mode.~~ no more 2022-07-28 Update: I'm at a point where I think the component is very usable and open for reviews to merge something that is very close to what is already implemented.

    Before merging

    Here the list of tasks before we consider acceptable to merge this code in the beta

    • [x] Add the experimental feature flag
    • [x] Write tests for each service
      • [x] image_to_string (skipped because tesseract's output is not reliable between distros)
      • [x] image_to_tsv (skipped because tesseract's output is not reliable between distros)
      • [x] format_tsv_output
    • [x] Restrict the possible file types
    • [x] Checkbox make the uploaded picture the recipe thumbnail
    • [x] Nice UI to make the process of importing a recipe like this easier and usable
    • [x] Add possibility to automatically populate single ingredients/steps fields
    • [x] Replace the POST tsv route to take asset names in order instead of files that are already on the server
    • [x] Add a way to return to the ocr-editor page after a recipe was created
    • [x] Remove sample ingredients and steps from the initial recipe creation
    • [x] Tidy up the ui (looking especially at the buttons)
    • [x] Preserve lines or paragraphs
    • [x] Fix the things that makes the CI so angry
    • [x] Write help dialog
    • [x] Bugfix: Mouse position is offset when the page is scrolled down
    • [x] Make all the hard coded English text translatable
    • [x] ~~Add mode to highlight boxes of recognized text on the image~~ Recognized text is highlighted on component mount
    • [x] Fix bug where ratio is not respected on big images
    • [ ] Add a quick(er) help for users to get going as fast as possible.

    Nice to have's

    • [x] Define the canvas variable pointing to the canvas html element only once instead of every function in the ocr-editor component
    • [ ] Add advanced settings (e.g. Language to improve pytesseract recognition)
    • [ ] Possibility to add multiple pages/files and switch between them
    • [x] Clean up the ocr-editor page by creating a RecipeOcrEditor component
    • [ ] Automatic field filling suggestion
      • [x] Recipe title

    Design

    This new feature is based on previous experience with a similar software solution called Esker. The process that I have designed for now lets the user use a new creation page/recipe/create/ocr letting them upload a picture, optionally making it the recipe thumbnail. This creates a recipe called "New OCR Recipe" with the uploaded picture as an asset called "Original recipe image". Additionally, a new column in the recipes table registers that this recipe is an OCR recipe.

    The user is directed to the page "recipe/_slug/ocr-editor" where they can use the image they uploaded to fill the usual recipe fields on the right part of the page. When this page in mounted, it sends the asset name to the backend fot it to send back the text and contained inside and its position.

    Two modes are available.

    • Selection mode, lets the user input data.
    • Pan and Zoom mode lets the user move around when pictures are big enough to do so.

    In selection mode, the user can draw a rectangle, the identified text will appear under the canvas. The user can then select any recipe field on the right, then click anywhere inside the rectangle. This will take whatever text is fully contained in the rectangle and overwrite the field that was last selected.

    The bulk add buttons will spawn a dialog with the selected text (understand text under the drawn rectangle) inside them. This is where the Split text modes come into play, it lets the user choose whether they want to keep all line breaks, for example, if a recipe book lists one ingredient per line, they are able to select the whole list, press bulk add on the ingredient tab and add all ingredients in 2 clicks.

    The mode flatten will remove all line breaks and the blocks mode will put line breaks between identified blocks by tesseract. The blocks mode is pretty useful for instructions, that usually come into multiple paragraphs in a form of blocks, making it easier to use the bulk add dialog, this time for instructions.

    For recipes that are called New OCR Recipe (n) or regex /New\sOCR\sRecipe(\s\([0-9]+\))?/g, the ocr-editor component will take the biggest block with the fewer words, assume it is the recipe's title, and populate it in the recipe name field. This is done with the function findRecipeTitle in the ocr-editor component.

    When the user is happy with the edits the recipe can be saved the usual way.They can come back to the OCR editor page by clicking the usual edit button and using the new button "OCR Editor" that will appear when the recipe is an OCR Recipe (hence the new table column).

    opened by Miroito 14
  • [v1.0.0b] - Food.com recipes will not import

    [v1.0.0b] - Food.com recipes will not import

    First Check

    • [X] This is not a feature request
    • [X] I added a very descriptive title to this issue.
    • [X] I used the GitHub search to find a similar issue and didn't find it.
    • [X] I searched the Mealie documentation, with the integrated search.
    • [X] I already read the docs and didn't find an answer.

    What is the issue you are experiencing?

    When trying to import recipes from food.com , I receive the error "Looks like we couldn't find anything". When I debug the scraper, I receive the message ""recipe_scrapers was unable to scrape this URL"

    It looks like my installation is using Recipe Scraper v 14.11.0 and according to the issues page for Recipe Scraper, this looks to be a bug corrected in 14.13.0

    Deployment

    Unraid

    Deployment Details

    Not using the built-in template for unRAID

    opened by thewolfman56 0
  • Can't import from WordPress site with Jetpack recipe shortcode

    Can't import from WordPress site with Jetpack recipe shortcode

    First Check

    • [X] This is not a feature request
    • [X] I added a very descriptive title to this issue.
    • [X] I used the GitHub search to find a similar issue and didn't find it.
    • [X] I searched the Mealie documentation, with the integrated search.
    • [X] I already read the docs and didn't find an answer.
    • [X] I have checked for existing issues that have been resolved in v1-beta

    What is the issue you are experiencing?

    WordPress can use shortcodes to display recipes. These shortcodes are provided by the Jetpack plugin, a free plugin made by Automattic (who also make Wordpress) that enables a lot of advanced features. The doc for the shortcode is here: https://wordpress.com/support/recipes/

    Other docs about this Wordpress feature say that it uses the h-recipe microformat, and the html source claims it uses the schema.org/recipe format http://microformats.org/wiki/h-recipe https://schema.org/Recipe

    Mealie is unable to parse these recipes, though. Here is an example page: https://recipes.norelid.com/colombian-recipes/ox-tail-stew/

    When I import, I get "could not detect ingredients/instructions". This issue is reproduced in v1-beta as well.

    Deployment

    Docker (Linux)

    Deployment Details

    docker-compose with latest tag

    Mealie Version

    0.5.4

    opened by ponchohoncho 2
  • Feat/recipe timeline

    Feat/recipe timeline

    What type of PR is this?

    (REQUIRED)

    • feature

    What this PR does / why we need it:

    (REQUIRED)

    This PR is one major step towards achieving FR #1451. It creates a new RecipeTimelineEvent table for the purpose of tracking arbitrary "events" in a Recipe's lifecycle. The focus of this PR is to implement the backend framework, rather than fully utilize it within the application (which will be in a future PR). The features of this PR include:

    • The new table
    • Schema definitions
    • API routes
    • A simple "Recipe Created" timeline event, which is created immediately after a recipe is created

    Which issue(s) this PR fixes:

    (REQUIRED)

    Works towards #1451

    Special notes for your reviewer:

    (fill-in or delete this section)

    For the most part I think the changes speak for themselves, with the goal of serving #1451, but there are a few things I want to point out:

    • You were probably going to do this anyway, but check out the new table definition and let me know if you see any issues with it. Some specific things:
      • I'm pretty sure I did this right, but check out the parent/child relationships and foreign keys with recipes and users. I don't think we need to generate a composite key using the recipe_id, but let me know
      • the intent of the image column is to enable an upload on the frontend so users can share pictures of their recipes when they make them. Obviously more work needs to be done on the frontend for uploading images, but I figure I can put the column there now
      • the intent of the event_type enum is so we can stylize timeline events on the frontend. I figure we can have a switch statement that adds a special icon for different event types
    • This is more of an observation, but I ran into trouble originally when the timestamp column was named event_dt. The issue was in the backup script: because event_dt wasn't in the hardcoded list of column names to convert to a datetime object, the backup failed (since SQLite doesn't work with datetimes represented as strings). I was going to add event_dt to the hardcoded list, but then I saw timestamp in there and figured that's a better name anyway. I feel like there should be a better way to handle that conversion other than a hardcoded list, but I have no clue what that better way is, if there is one ¯\_(ツ)_/¯

    Testing

    (fill-in or delete this section)

    Various test cases were added for recipe timeline events.

    Release Notes

    (REQUIRED)

    added backend API for recipe timeline events
    
    opened by michael-genson 1
  • [v1.0.0b] - Docker compose install is failing - ERROR: Encountered errors while bringing up the project.

    [v1.0.0b] - Docker compose install is failing - ERROR: Encountered errors while bringing up the project.

    First Check

    • [X] This is not a feature request
    • [X] I added a very descriptive title to this issue.
    • [X] I used the GitHub search to find a similar issue and didn't find it.
    • [X] I searched the Mealie documentation, with the integrated search.
    • [X] I already read the docs and didn't find an answer.

    What is the issue you are experiencing?

    I am simply trying to install mealie with the recommended docker-compose way via the documentation on this page https://hay-kot.github.io/mealie/documentation/getting-started/install/

    `sudo docker-compose up -d Starting mealie ... error

    ERROR: for mealie Cannot start service mealie: OCI runtime create failed: container_linux.go:367: starting container process caused: process_linux.go:495: container init caused: process_linux.go:458: setting cgroup config for procHooks process caused: can't load program: operation not permitted: unknown

    ERROR: for mealie Cannot start service mealie: OCI runtime create failed: container_linux.go:367: starting container process caused: process_linux.go:495: container init caused: process_linux.go:458: setting cgroup config for procHooks process caused: can't load program: operation not permitted: unknown ERROR: Encountered errors while bringing up the project.`

    My system: Static hostname: docker Icon name: computer-container Chassis: container Machine ID: 195960f05385474a951a6b82e08e1dba Boot ID: bdab02f41e77431b9d8bb86cc1f80b63 Virtualization: lxc Operating System: Debian GNU/Linux 11 (bullseye) Kernel: Linux 5.15.39-4-pve Architecture: x86-64

    I have tried both the "@latest" and "hkotel/mealie:frontend-v1.0.0beta-4" just as a troubleshooting measure.

    Deployment

    Docker (Linux)

    Deployment Details

    I made docker-compose.yml file in /tmp/

    Looks like this:

    `version: "3.1" services: mealie: container_name: mealie image: hkotel/mealie:frontend-v1.0.0beta-4 restart: always ports: - 9925:80 environment: PUID: 1000 PGID: 1000 TZ: America/Chicago

      # Default Recipe Settings
      RECIPE_PUBLIC: 'true'
      RECIPE_SHOW_NUTRITION: 'true'
      RECIPE_SHOW_ASSETS: 'true'
      RECIPE_LANDSCAPE_VIEW: 'true'
      RECIPE_DISABLE_COMMENTS: 'false'
      RECIPE_DISABLE_AMOUNT: 'false'
    
      # Gunicorn
      # WEB_CONCURRENCY: 2
      # WORKERS_PER_CORE: 0.5
      # MAX_WORKERS: 8
    volumes:
      - ./mealie/data/:/app/data`
    

    tried running with docker-compose up -d and with sudo docker-compose up -d

    opened by Kickbut101 1
  • fix(deps): bump @vueuse/core from 9.2.0 to 9.3.0 in /frontend

    fix(deps): bump @vueuse/core from 9.2.0 to 9.3.0 in /frontend

    Bumps @vueuse/core from 9.2.0 to 9.3.0.

    Release notes

    Sourced from @​vueuse/core's releases.

    v9.3.0

       🚀 Features

       🐞 Bug Fixes

        View changes on GitHub
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 0
  • [v1.0.0b] - Docs: broken links to demo

    [v1.0.0b] - Docs: broken links to demo

    First Check

    • [X] This is not a feature request
    • [X] I added a very descriptive title to this issue.
    • [X] I used the GitHub search to find a similar issue and didn't find it.
    • [X] I searched the Mealie documentation, with the integrated search.
    • [X] I already read the docs and didn't find an answer.

    What is the issue you are experiencing?

    In https://nightly.mealie.io/ the "View the Demo" button on the home page just reopens the same home page in a new tab. There is also a link in docs/docs/documentation/getting-started/api-usage.md that leads to https://mealie-demo.hay-kot.dev/ which I'm assuming should point to demo.mealie.io instead.

    I see #1639 merged a demo link fix, but that was two weeks ago and I still am having the above stated issues.

    Deployment

    Other

    Deployment Details

    No response

    bug bug: confirmed 
    opened by mbrinkl 0
Releases(v1.0.0beta-4)
  • v1.0.0beta-4(Jul 31, 2022)

  • v1.0.0beta-3(Jun 7, 2022)

    Release Notes

    • https://nightly.mealie.io/changelog/v1.0.0beta-3/

    What's Changed

    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/1308
    • Fixup: render homepage social media link images at 32x32 size by @jayaddison in https://github.com/hay-kot/mealie/pull/1310
    • fix: update issue links in v1.0.0beta-2 changelog by @PFischbeck in https://github.com/hay-kot/mealie/pull/1312
    • fix: bad import path by @hay-kot in https://github.com/hay-kot/mealie/pull/1313
    • fix: printer page refs by @hay-kot in https://github.com/hay-kot/mealie/pull/1314
    • Feature/ingredient-defaults by @hay-kot in https://github.com/hay-kot/mealie/pull/1315
    • wip: pagination-repository by @hay-kot in https://github.com/hay-kot/mealie/pull/1316
    • chore(deps-dev): bump @types/sortablejs from 1.10.7 to 1.13.0 in /frontend by @dependabot in https://github.com/hay-kot/mealie/pull/1287
    • chore(deps-dev): bump @babel/eslint-parser from 7.15.4 to 7.18.2 in /frontend by @dependabot in https://github.com/hay-kot/mealie/pull/1290
    • fix(deps): bump @vue/composition-api from 1.6.1 to 1.6.2 in /frontend by @dependabot in https://github.com/hay-kot/mealie/pull/1275
    • feat: add unit abbreviation support by @hay-kot in https://github.com/hay-kot/mealie/pull/1332
    • fix: shopping list label editor by @hay-kot in https://github.com/hay-kot/mealie/pull/1333
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/1329
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/1339
    • refactor: unify recipe-organizer components by @hay-kot in https://github.com/hay-kot/mealie/pull/1340
    • security: delay server response whenever username is non existing by @underfl0w in https://github.com/hay-kot/mealie/pull/1338
    • docs: update sqlite documentation to use most recent version by @Bentipa in https://github.com/hay-kot/mealie/pull/1346
    • docs update postgres documentation to use most recent version by @Bentipa in https://github.com/hay-kot/mealie/pull/1347
    • feat: attached images by drag and drop for recipe steps by @hay-kot in https://github.com/hay-kot/mealie/pull/1341
    • fix: update URL for shared recipe pages to use id instead of slug by @hay-kot in https://github.com/hay-kot/mealie/pull/1348
    • Release/beta 3 by @hay-kot in https://github.com/hay-kot/mealie/pull/1349

    New Contributors

    • @jayaddison made their first contribution in https://github.com/hay-kot/mealie/pull/1310
    • @underfl0w made their first contribution in https://github.com/hay-kot/mealie/pull/1338
    • @Bentipa made their first contribution in https://github.com/hay-kot/mealie/pull/1346

    Full Changelog: https://github.com/hay-kot/mealie/compare/v1.0.0beta-2...v1.0.0beta-3

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0beta-2(May 29, 2022)

    What's Changed

    • chore: github stalebot changes by @hay-kot in https://github.com/hay-kot/mealie/pull/1271
    • fix: #1270 migration not capture settings by @hay-kot in https://github.com/hay-kot/mealie/pull/1272
    • fix(deps): bump isomorphic-dompurify from 0.18.0 to 0.19.0 in /frontend by @dependabot in https://github.com/hay-kot/mealie/pull/1257
    • chore(deps-dev): bump eslint-plugin-nuxt from 2.0.0 to 3.2.0 in /frontend by @dependabot in https://github.com/hay-kot/mealie/pull/1258
    • chore(deps-dev): bump @vue/runtime-dom from 3.2.35 to 3.2.36 in /frontend by @dependabot in https://github.com/hay-kot/mealie/pull/1259
    • chore(deps-dev): bump nuxt-vite from 0.1.3 to 0.3.5 in /frontend by @dependabot in https://github.com/hay-kot/mealie/pull/1260
    • chore(deps-dev): bump vue2-script-setup-transform from 0.2.6 to 0.3.5 in /frontend by @dependabot in https://github.com/hay-kot/mealie/pull/1263
    • fix(deps): bump @nuxtjs/auth-next from 5.0.0-1624817847.21691f1 to 5.0.0-1648802546.c9880dc in /frontend by @dependabot in https://github.com/hay-kot/mealie/pull/1265
    • add conccureny config by @hay-kot in https://github.com/hay-kot/mealie/pull/1280
    • fix: bad dev dependency by @hay-kot in https://github.com/hay-kot/mealie/pull/1281
    • refactor: split up recipe create page by @PFischbeck in https://github.com/hay-kot/mealie/pull/1283
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/1284
    • chore: update dev dependencies by @hay-kot in https://github.com/hay-kot/mealie/pull/1282
    • remove explicity typescript version by @hay-kot in https://github.com/hay-kot/mealie/pull/1285
    • fix: recipe assets build by @hay-kot in https://github.com/hay-kot/mealie/pull/1286
    • refactor: recipe bulk importer by @hay-kot in https://github.com/hay-kot/mealie/pull/1294
    • fix: add touch support for mealplanner by @hay-kot in https://github.com/hay-kot/mealie/pull/1295
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/1296
    • fix: add touch support for mealplanner delete by @hay-kot in https://github.com/hay-kot/mealie/pull/1298
    • feat: improve touch support with icon and handle by @hay-kot in https://github.com/hay-kot/mealie/pull/1302
    • docs: add references for VSCode dev containers by @Drumstickx in https://github.com/hay-kot/mealie/pull/1299
    • docs: docker-compose.dev.yml is currently not functional by @Drumstickx in https://github.com/hay-kot/mealie/pull/1300
    • chore: bump recipe scrapers version by @hay-kot in https://github.com/hay-kot/mealie/pull/1303
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/1304
    • rewrite print implementation to support new ing by @hay-kot in https://github.com/hay-kot/mealie/pull/1305
    • chore: bump version by @hay-kot in https://github.com/hay-kot/mealie/pull/1307

    New Contributors

    • @dependabot made their first contribution in https://github.com/hay-kot/mealie/pull/1257

    Full Changelog: https://github.com/hay-kot/mealie/compare/v1.0.0-beta-1...v1.0.0beta-2

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0-beta-1(May 24, 2022)

    Release Notes and Beta Docs

    • https://nightly.mealie.io/
    • https://nightly.mealie.io/changelog/v1.0.0/

    All Commits

    • Feature/mkdocs version bump by @hay-kot in https://github.com/hay-kot/mealie/pull/240
    • Feature/recipe viewer by @hay-kot in https://github.com/hay-kot/mealie/pull/244
    • bug/backup-download by @hay-kot in https://github.com/hay-kot/mealie/pull/245
    • Feature/meal planner by @hay-kot in https://github.com/hay-kot/mealie/pull/246
    • Nextcloud Import Bugs - #248 by @hay-kot in https://github.com/hay-kot/mealie/pull/250
    • Add bulk import examples to docs. by @natpuch in https://github.com/hay-kot/mealie/pull/252
    • Refactor/app settings by @hay-kot in https://github.com/hay-kot/mealie/pull/251
    • Feature/about api by @hay-kot in https://github.com/hay-kot/mealie/pull/253
    • Feature/image minify by @hay-kot in https://github.com/hay-kot/mealie/pull/256
    • Feature/additional endpoints by @hay-kot in https://github.com/hay-kot/mealie/pull/257
    • add pillow dependencies by @hay-kot in https://github.com/hay-kot/mealie/pull/258
    • Feature/search page by @hay-kot in https://github.com/hay-kot/mealie/pull/259
    • Do not force theme settings on login form by @sephrat in https://github.com/hay-kot/mealie/pull/260
    • Fix docker dev db persistence by @sephrat in https://github.com/hay-kot/mealie/pull/264
    • merge category and tag selector by @hay-kot in https://github.com/hay-kot/mealie/pull/262
    • bug-fixes/category-tag-creator by @hay-kot in https://github.com/hay-kot/mealie/pull/266
    • Hot Fix by @hay-kot in https://github.com/hay-kot/mealie/pull/269
    • Fix some pytests by @sephrat in https://github.com/hay-kot/mealie/pull/265
    • Add Portuguese Translation by @pmatarodrigues in https://github.com/hay-kot/mealie/pull/232
    • Feature/migration-rewrite by @hay-kot in https://github.com/hay-kot/mealie/pull/278
    • refactor/image-minification by @hay-kot in https://github.com/hay-kot/mealie/pull/285
    • feature/debug-info by @hay-kot in https://github.com/hay-kot/mealie/pull/286
    • Basic nutrition editor by @hay-kot in https://github.com/hay-kot/mealie/pull/288
    • Sanitize recipe backup filenames by @sephrat in https://github.com/hay-kot/mealie/pull/287
    • Display categories in sidebar if no pages set by @sephrat in https://github.com/hay-kot/mealie/pull/292
    • Enrich page title with context by @sephrat in https://github.com/hay-kot/mealie/pull/296
    • Fix/adds missing german locales #124 by @JonasSchubert in https://github.com/hay-kot/mealie/pull/298
    • Fix ingredient checkbox click by @sephrat in https://github.com/hay-kot/mealie/pull/305
    • Localize custom pages and search page by @sephrat in https://github.com/hay-kot/mealie/pull/299
    • Crowdin integration by @sephrat in https://github.com/hay-kot/mealie/pull/319
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/322
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/323
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/324
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/327
    • Make first day of week in calendar view customizable by @sephrat in https://github.com/hay-kot/mealie/pull/263
    • Fix date picker not properly localized by @sephrat in https://github.com/hay-kot/mealie/pull/330
    • Add tip to fix rpi host running docker container by @cklann1 in https://github.com/hay-kot/mealie/pull/335
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/328
    • es-ES.json by @CMBoii in https://github.com/hay-kot/mealie/pull/334
    • feature/editor-improvements by @hay-kot in https://github.com/hay-kot/mealie/pull/289
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/340
    • Document new translation process with Crowdin by @sephrat in https://github.com/hay-kot/mealie/pull/342
    • Localize more dates and texts by @sephrat in https://github.com/hay-kot/mealie/pull/341
    • Get Recipes Route Rewrite by @hay-kot in https://github.com/hay-kot/mealie/pull/339
    • Fix ingredients list not being refreshed upon recipe change by @sephrat in https://github.com/hay-kot/mealie/pull/343
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/344
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/345
    • Fix infinite loop in meal planner randomizer by @sephrat in https://github.com/hay-kot/mealie/pull/346
    • More localization by @sephrat in https://github.com/hay-kot/mealie/pull/348
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/349
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/351
    • App Bar Rewrite by @hay-kot in https://github.com/hay-kot/mealie/pull/347
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/355
    • feature/category-tag-crud by @hay-kot in https://github.com/hay-kot/mealie/pull/354
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/359
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/361
    • Remove dead code by @sephrat in https://github.com/hay-kot/mealie/pull/362
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/363
    • feature/new-recipe-features by @hay-kot in https://github.com/hay-kot/mealie/pull/360
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/365
    • refactor/recipe-to-snake-case by @hay-kot in https://github.com/hay-kot/mealie/pull/364
    • More localization by @sephrat in https://github.com/hay-kot/mealie/pull/358
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/366
    • Hide user ID + Reset password when creating a user by @sephrat in https://github.com/hay-kot/mealie/pull/367
    • refactor/docker-updates by @hay-kot in https://github.com/hay-kot/mealie/pull/369
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/368
    • Refactor/recipe routes by @hay-kot in https://github.com/hay-kot/mealie/pull/370
    • Api refactoring fixes by @sephrat in https://github.com/hay-kot/mealie/pull/372
    • More localization by @sephrat in https://github.com/hay-kot/mealie/pull/373
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/374
    • Shopping list fixes by @sephrat in https://github.com/hay-kot/mealie/pull/376
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/377
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/378
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/379
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/380
    • Remove former profile image upon new upload by @sephrat in https://github.com/hay-kot/mealie/pull/381
    • feature/additional-db by @hay-kot in https://github.com/hay-kot/mealie/pull/371
    • feature/recipe-patch-improvements by @hay-kot in https://github.com/hay-kot/mealie/pull/382
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/383
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/385
    • feature/finish-recipe-assets by @hay-kot in https://github.com/hay-kot/mealie/pull/384
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/386
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/387
    • Refactor/backend routers by @hay-kot in https://github.com/hay-kot/mealie/pull/388
    • feature/new-feature-cleanup by @hay-kot in https://github.com/hay-kot/mealie/pull/389
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/390
    • feature/profile-cards by @hay-kot in https://github.com/hay-kot/mealie/pull/391
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/392
    • More localization by @sephrat in https://github.com/hay-kot/mealie/pull/393
    • backend-events + code-cleanup by @hay-kot in https://github.com/hay-kot/mealie/pull/395
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/394
    • Feature/event notifications by @hay-kot in https://github.com/hay-kot/mealie/pull/399
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/398
    • Bug/misc bug fixes by @hay-kot in https://github.com/hay-kot/mealie/pull/400
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/401
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/402
    • More localization by @sephrat in https://github.com/hay-kot/mealie/pull/403
    • Feature/copy icon by @hay-kot in https://github.com/hay-kot/mealie/pull/406
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/404
    • feature/print-page by @hay-kot in https://github.com/hay-kot/mealie/pull/407
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/408
    • notification import/export by @hay-kot in https://github.com/hay-kot/mealie/pull/413
    • fallback to icon when no image by @hay-kot in https://github.com/hay-kot/mealie/pull/414
    • Add padding to the search panel by @TheZoker in https://github.com/hay-kot/mealie/pull/416
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/410
    • feature/mealplanner-rewrite by @hay-kot in https://github.com/hay-kot/mealie/pull/417
    • Feature/style unification by @hay-kot in https://github.com/hay-kot/mealie/pull/420
    • bug/bug-fixes by @hay-kot in https://github.com/hay-kot/mealie/pull/424
    • Add web manifest by @pR0Ps in https://github.com/hay-kot/mealie/pull/422
    • refactor/frontend-styles by @hay-kot in https://github.com/hay-kot/mealie/pull/425
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/423
    • bug/mobile-fixes by @hay-kot in https://github.com/hay-kot/mealie/pull/426
    • feature/mobile-layout by @hay-kot in https://github.com/hay-kot/mealie/pull/431
    • Changing docs with reverse proxy by @zierbeek in https://github.com/hay-kot/mealie/pull/436
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/432
    • Support PWA by @wengtad in https://github.com/hay-kot/mealie/pull/437
    • Localize new strings by @sephrat in https://github.com/hay-kot/mealie/pull/445
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/444
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/447
    • feature/favorite-recipes by @hay-kot in https://github.com/hay-kot/mealie/pull/443
    • feature/recipe-comments by @hay-kot in https://github.com/hay-kot/mealie/pull/448
    • Bug/general fixes by @hay-kot in https://github.com/hay-kot/mealie/pull/450
    • fix pwa not working behind an authenticated proxy by @wengtad in https://github.com/hay-kot/mealie/pull/452
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/449
    • Documentation Beta 0.5.0 Dashboard, toolbox and site-settings by @zierbeek in https://github.com/hay-kot/mealie/pull/466
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/455
    • Fixed backup, updated backup docu by @grssmnn in https://github.com/hay-kot/mealie/pull/430
    • Bug Fixes by @hay-kot in https://github.com/hay-kot/mealie/pull/467
    • Add Web Share api to ContextMenu.vue by @zierbeek in https://github.com/hay-kot/mealie/pull/462
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/468
    • docs/update outline by @hay-kot in https://github.com/hay-kot/mealie/pull/471
    • Add Dutch language by @sephrat in https://github.com/hay-kot/mealie/pull/473
    • Feature/improve error message on scrape by @hay-kot in https://github.com/hay-kot/mealie/pull/476
    • fix clean_string error by @wengtad in https://github.com/hay-kot/mealie/pull/481
    • add soft fail user dependency by @hay-kot in https://github.com/hay-kot/mealie/pull/479
    • Rewrite Recipe Editor Buttons Bar by @hay-kot in https://github.com/hay-kot/mealie/pull/482
    • fixes #485 by @hay-kot in https://github.com/hay-kot/mealie/pull/494
    • use psycopg2 instead of binary on prod by @wengtad in https://github.com/hay-kot/mealie/pull/483
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/470
    • Documentation 0.5.0 by @zierbeek in https://github.com/hay-kot/mealie/pull/474
    • Docs/v0.5.0 second pass by @hay-kot in https://github.com/hay-kot/mealie/pull/496
    • add tooltip to fab by @wengtad in https://github.com/hay-kot/mealie/pull/497
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/498
    • fix unauthorized recipe by @wengtad in https://github.com/hay-kot/mealie/pull/499
    • fix docs links by @wengtad in https://github.com/hay-kot/mealie/pull/500
    • add translate on toggle theme mode by @wengtad in https://github.com/hay-kot/mealie/pull/501
    • Images and demo custom pages by @zierbeek in https://github.com/hay-kot/mealie/pull/502
    • Add Database Layer for Recipe Scaling by @hay-kot in https://github.com/hay-kot/mealie/pull/506
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/503
    • fix docs by @wengtad in https://github.com/hay-kot/mealie/pull/505
    • Add Spanish language by @CMBoii in https://github.com/hay-kot/mealie/pull/510
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/508
    • Improve Test Coverage by @hay-kot in https://github.com/hay-kot/mealie/pull/511
    • Bug/fix infinite loop by @hay-kot in https://github.com/hay-kot/mealie/pull/512
    • Feature/add cofirmation dialogs by @hay-kot in https://github.com/hay-kot/mealie/pull/513
    • Frontend Fixes + Adjust Caddyfile by @hay-kot in https://github.com/hay-kot/mealie/pull/518
    • Make string 'Refresh' and 'New update available' translatable by @zierbeek in https://github.com/hay-kot/mealie/pull/524
    • More localization by @sephrat in https://github.com/hay-kot/mealie/pull/525
    • Fix Users API Token API path by @sephrat in https://github.com/hay-kot/mealie/pull/526
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/514
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/528
    • dev-feature/analyze-bundle by @hay-kot in https://github.com/hay-kot/mealie/pull/529
    • Docs/finale changelog by @hay-kot in https://github.com/hay-kot/mealie/pull/530
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/531
    • Reset disabled steps when switching recipe by @sephrat in https://github.com/hay-kot/mealie/pull/537
    • Typos and switched dicemultiple for sort by @zierbeek in https://github.com/hay-kot/mealie/pull/540
    • Always display ingredients in edit mode by @sephrat in https://github.com/hay-kot/mealie/pull/543
    • Bug fixes/v0.5.1 by @hay-kot in https://github.com/hay-kot/mealie/pull/545
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/544
    • feature/improve-bundle-performance by @hay-kot in https://github.com/hay-kot/mealie/pull/555
    • fixes #548 by @wengtad in https://github.com/hay-kot/mealie/pull/557
    • move api calls to created event by @hay-kot in https://github.com/hay-kot/mealie/pull/559
    • fix readme badge by @wengtad in https://github.com/hay-kot/mealie/pull/565
    • Fix about page by @sephrat in https://github.com/hay-kot/mealie/pull/563
    • Lazy load translations by @sephrat in https://github.com/hay-kot/mealie/pull/561
    • Add Confirmation Dialogs by @wengtad in https://github.com/hay-kot/mealie/pull/564
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/547
    • Localization by @sephrat in https://github.com/hay-kot/mealie/pull/568
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/569
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/570
    • Fix en-US language not being loaded by @sephrat in https://github.com/hay-kot/mealie/pull/574
    • Printview columns by @zierbeek in https://github.com/hay-kot/mealie/pull/572
    • Revert "Printview columns" by @hay-kot in https://github.com/hay-kot/mealie/pull/577
    • fix typos and punctuation by @richboss in https://github.com/hay-kot/mealie/pull/582
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/580
    • Feature/import export single recipe by @hay-kot in https://github.com/hay-kot/mealie/pull/576
    • API security hardening by @sephrat in https://github.com/hay-kot/mealie/pull/571
    • Optimize Docker by @wengtad in https://github.com/hay-kot/mealie/pull/575
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/583
    • Added info on how the Sensor in HA is created by @Tommatheussen in https://github.com/hay-kot/mealie/pull/584
    • Remove unmaintained languages + minor localization tasks by @sephrat in https://github.com/hay-kot/mealie/pull/587
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/589
    • Add label to assets icons by @sephrat in https://github.com/hay-kot/mealie/pull/591
    • Handle untitled note by @sephrat in https://github.com/hay-kot/mealie/pull/592
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/594
    • Localization by @sephrat in https://github.com/hay-kot/mealie/pull/596
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/600
    • Hide DB credentials on logs/frontend by @wengtad in https://github.com/hay-kot/mealie/pull/602
    • Remove tmpfs by @wengtad in https://github.com/hay-kot/mealie/pull/603
    • refactor/class-based-gunicorn-conf by @hay-kot in https://github.com/hay-kot/mealie/pull/607
    • Refactor/class based gunicorn conf by @hay-kot in https://github.com/hay-kot/mealie/pull/608
    • collapse steps on check by @hay-kot in https://github.com/hay-kot/mealie/pull/609
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/611
    • Bug/misc fixes by @hay-kot in https://github.com/hay-kot/mealie/pull/618
    • Feature/ingredient sections by @hay-kot in https://github.com/hay-kot/mealie/pull/624
    • Update ios.md by @rastacalavera in https://github.com/hay-kot/mealie/pull/621
    • Add support for en-GB by @sephrat in https://github.com/hay-kot/mealie/pull/629
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/626
    • Bug/multiple events by @hay-kot in https://github.com/hay-kot/mealie/pull/631
    • fixes #625 by @hay-kot in https://github.com/hay-kot/mealie/pull/632
    • [Feat] ✨ Migrate from Pages to Cookbooks by @hay-kot in https://github.com/hay-kot/mealie/pull/664
    • refactor(backend): ♻️ Refactor group page and database WIP by @hay-kot in https://github.com/hay-kot/mealie/pull/666
    • refactor(♻️): update 'about' page to new composition API by @hay-kot in https://github.com/hay-kot/mealie/pull/667
    • refactor(backend): :recycle: change error messages to follow standard by @hay-kot in https://github.com/hay-kot/mealie/pull/668
    • refactor(backend): :recycle: refactor backend services by @hay-kot in https://github.com/hay-kot/mealie/pull/669
    • refactor(frontend): ♻️ split user profile/management by @hay-kot in https://github.com/hay-kot/mealie/pull/670
    • feat(backend): ✨ migrate site-settings to groups by @hay-kot in https://github.com/hay-kot/mealie/pull/673
    • feat(backend): ✨ start multi-tenant support (WIP) by @hay-kot in https://github.com/hay-kot/mealie/pull/680
    • feat(backend): ✨ rewrite mealplanner with simple api by @hay-kot in https://github.com/hay-kot/mealie/pull/683
    • refactor(backend): ♻️ cleanup HTTP service classes and remove database singleton by @hay-kot in https://github.com/hay-kot/mealie/pull/687
    • feat(backend): 🚧 stub out new exporter service (WIP) by @hay-kot in https://github.com/hay-kot/mealie/pull/715
    • Feature/update login UI by @hay-kot in https://github.com/hay-kot/mealie/pull/716
    • style(frontend): 🎨 refactor/rewrite UI for meal-planner by @hay-kot in https://github.com/hay-kot/mealie/pull/717
    • perf(backend): ⚡ remove validation on recipe summary response by @hay-kot in https://github.com/hay-kot/mealie/pull/718
    • Feature/infinite scroll by @hay-kot in https://github.com/hay-kot/mealie/pull/719
    • Feature/email support by @hay-kot in https://github.com/hay-kot/mealie/pull/720
    • feat(frontend): ✨ add group permissions by @hay-kot in https://github.com/hay-kot/mealie/pull/721
    • Some minor typo fixes in the v1 changelog by @Tommatheussen in https://github.com/hay-kot/mealie/pull/726
    • feat(frontend): ✨ Fix scheduler, forgot password flow, and minor bug fixes by @hay-kot in https://github.com/hay-kot/mealie/pull/725
    • Docs/installation guide by @hay-kot in https://github.com/hay-kot/mealie/pull/727
    • Feature/CRF++ and server side locales by @hay-kot in https://github.com/hay-kot/mealie/pull/731
    • feat: ✨ Add brute strategy to ingredient processor by @hay-kot in https://github.com/hay-kot/mealie/pull/744
    • feat: ✨ add bulk actions service and routes (WIP) by @hay-kot in https://github.com/hay-kot/mealie/pull/747
    • Feature/Capture Scraper Improvement PRs by @hay-kot in https://github.com/hay-kot/mealie/pull/749
    • feat(frontend): ✨ add debugger to creation page by @hay-kot in https://github.com/hay-kot/mealie/pull/750
    • feat(backend): ✨ Minor linting, bulk URL import, and improve BG tasks by @hay-kot in https://github.com/hay-kot/mealie/pull/760
    • Chore/general UI cleanup by @hay-kot in https://github.com/hay-kot/mealie/pull/764
    • fix(frontend): :bug: fix section titles carrying over on deleted items by @hay-kot in https://github.com/hay-kot/mealie/pull/765
    • Refactor/user database models by @hay-kot in https://github.com/hay-kot/mealie/pull/775
    • fix(backend): :bug: Fix favorite assignment on backend by @hay-kot in https://github.com/hay-kot/mealie/pull/778
    • Feature/recipe instructions improvements by @hay-kot in https://github.com/hay-kot/mealie/pull/785
    • feat(frontend): ✨ Rewrite context menu in TS and add 'add to mealplan' context menu action by @hay-kot in https://github.com/hay-kot/mealie/pull/786
    • Refactor/composables-folder by @hay-kot in https://github.com/hay-kot/mealie/pull/787
    • feature/improve-parser-ux by @hay-kot in https://github.com/hay-kot/mealie/pull/789
    • feat(frontend): ✨ food filter and add back search dialog by @hay-kot in https://github.com/hay-kot/mealie/pull/794
    • feat(frontend): ✨ Add Meal Tags + UI Improvements by @hay-kot in https://github.com/hay-kot/mealie/pull/807
    • Feature/restore-recipe-functionality by @hay-kot in https://github.com/hay-kot/mealie/pull/810
    • refactor: ♻️ rewrite admin CRUD interface for admins by @hay-kot in https://github.com/hay-kot/mealie/pull/825
    • fix(backend): :bug: Grab PRs from dev branch by @hay-kot in https://github.com/hay-kot/mealie/pull/826
    • feat(backend): ✨ refactor/fix group management for admins by @hay-kot in https://github.com/hay-kot/mealie/pull/838
    • refactor: ♻️ rewrite migrations frontend/backend by @hay-kot in https://github.com/hay-kot/mealie/pull/841
    • feat: ✨ add user recipe export functionality by @hay-kot in https://github.com/hay-kot/mealie/pull/845
    • Feature/misc tasks by @hay-kot in https://github.com/hay-kot/mealie/pull/864
    • Feature/shareable recipes by @hay-kot in https://github.com/hay-kot/mealie/pull/866
    • add support for meta tags on share pages by @hay-kot in https://github.com/hay-kot/mealie/pull/867
    • feat: :sparkles: Paprika/Mealie Migration support by @hay-kot in https://github.com/hay-kot/mealie/pull/873
    • feat(backend): :sparkles: add rename tag, tool, category support by @hay-kot in https://github.com/hay-kot/mealie/pull/875
    • feat: ✨ support for lockable recipes by @hay-kot in https://github.com/hay-kot/mealie/pull/876
    • Feature/user photo storage by @hay-kot in https://github.com/hay-kot/mealie/pull/877
    • Refactor/define repository layer by @hay-kot in https://github.com/hay-kot/mealie/pull/883
    • Add date range to useMealplans composable by @PFischbeck in https://github.com/hay-kot/mealie/pull/888
    • [1.0.0b] Fix titles of category, tag, tool pages by @PFischbeck in https://github.com/hay-kot/mealie/pull/905
    • Fix double click on sidebar on smaller screens by @PFischbeck in https://github.com/hay-kot/mealie/pull/906
    • Change the height style to min-height by @MidnightRising in https://github.com/hay-kot/mealie/pull/907
    • Trims urls before importing by @MidnightRising in https://github.com/hay-kot/mealie/pull/910
    • Use composition API for more components, enable more type checking by @PFischbeck in https://github.com/hay-kot/mealie/pull/914
    • feat: :sparkles: (WIP) base-shoppinglist infra by @hay-kot in https://github.com/hay-kot/mealie/pull/911
    • Feature/group based notifications by @hay-kot in https://github.com/hay-kot/mealie/pull/918
    • update developer getting-started by @hay-kot in https://github.com/hay-kot/mealie/pull/919
    • Refactor/conver to controllers by @hay-kot in https://github.com/hay-kot/mealie/pull/923
    • Fix more typing issues by @PFischbeck in https://github.com/hay-kot/mealie/pull/928
    • Feature/shopping lists second try by @hay-kot in https://github.com/hay-kot/mealie/pull/927
    • Feature/automated meal planner by @hay-kot in https://github.com/hay-kot/mealie/pull/939
    • set TESTING=false in containers by @hay-kot in https://github.com/hay-kot/mealie/pull/968
    • feature: proper multi-tenant-support by @hay-kot in https://github.com/hay-kot/mealie/pull/969
    • fix #967 and test error to catch by @hay-kot in https://github.com/hay-kot/mealie/pull/979
    • feature/multi-tenancy and move caddy server by @hay-kot in https://github.com/hay-kot/mealie/pull/980
    • remove default password and header by @hay-kot in https://github.com/hay-kot/mealie/pull/984
    • Bug/error relating units foods by @hay-kot in https://github.com/hay-kot/mealie/pull/987
    • Set up alembic migration usage by @PFischbeck in https://github.com/hay-kot/mealie/pull/954
    • Feature/new-login-page by @hay-kot in https://github.com/hay-kot/mealie/pull/989
    • Feature/UI updates by @hay-kot in https://github.com/hay-kot/mealie/pull/990
    • ignore unset when writing to db by @hay-kot in https://github.com/hay-kot/mealie/pull/993
    • Fix/multiple bug reports by @hay-kot in https://github.com/hay-kot/mealie/pull/1002
    • update pwa support + web fonts performance by @hay-kot in https://github.com/hay-kot/mealie/pull/1005
    • add wake-lock support and toggle support by @hay-kot in https://github.com/hay-kot/mealie/pull/1006
    • Style/update mobile styles by @hay-kot in https://github.com/hay-kot/mealie/pull/1008
    • Fix/multiple bug fixes by @hay-kot in https://github.com/hay-kot/mealie/pull/1015
    • Feature/collapse recipe sections by @hay-kot in https://github.com/hay-kot/mealie/pull/1021
    • Fix/fix slug names by @hay-kot in https://github.com/hay-kot/mealie/pull/1026
    • Feature/database backups by @hay-kot in https://github.com/hay-kot/mealie/pull/1040
    • capture dev PRs #1043 by @hay-kot in https://github.com/hay-kot/mealie/pull/1055
    • Chore/update alembic file format by @hay-kot in https://github.com/hay-kot/mealie/pull/1056
    • Added validators for users and recipes by @m42e in https://github.com/hay-kot/mealie/pull/1052
    • improve developer tooling (backend) by @hay-kot in https://github.com/hay-kot/mealie/pull/1051
    • Fix/fix block registration by @hay-kot in https://github.com/hay-kot/mealie/pull/1059
    • Improve devcontainer and configure VSCode debugging by @danielpalstra in https://github.com/hay-kot/mealie/pull/1060
    • Feature/group items editor by @hay-kot in https://github.com/hay-kot/mealie/pull/1064
    • Feature/move label editor by @hay-kot in https://github.com/hay-kot/mealie/pull/1069
    • Enable localization based on browser settings, add language selector by @PFischbeck in https://github.com/hay-kot/mealie/pull/925
    • Feature/auto generate crowdin data by @hay-kot in https://github.com/hay-kot/mealie/pull/1071
    • use retry loop on startup by @hay-kot in https://github.com/hay-kot/mealie/pull/1075
    • Feature/improve user feedback by @hay-kot in https://github.com/hay-kot/mealie/pull/1076
    • Reorganize Group/User Page Routes by @Miroito in https://github.com/hay-kot/mealie/pull/1084
    • Fix/fix broken pwa by @hay-kot in https://github.com/hay-kot/mealie/pull/1086
    • Fix/category link by @hay-kot in https://github.com/hay-kot/mealie/pull/1087
    • Feature/auto increment recipe name by @hay-kot in https://github.com/hay-kot/mealie/pull/1088
    • feat: add build id from commit hash by @hay-kot in https://github.com/hay-kot/mealie/pull/1095
    • feat: admin maintenance page by @hay-kot in https://github.com/hay-kot/mealie/pull/1096
    • fix: args order by @hay-kot in https://github.com/hay-kot/mealie/pull/1097
    • chore: refactor base schema by @hay-kot in https://github.com/hay-kot/mealie/pull/1098
    • docs: collect recent changes for v1 beta by @hay-kot in https://github.com/hay-kot/mealie/pull/1099
    • Fix/incorrect quantity column by @hay-kot in https://github.com/hay-kot/mealie/pull/1093
    • Feature/group statistics by @hay-kot in https://github.com/hay-kot/mealie/pull/1104
    • Fix clear url action in recipe creation by @Miroito in https://github.com/hay-kot/mealie/pull/1101
    • Keep Original Text on Ingredient Parse by @Miroito in https://github.com/hay-kot/mealie/pull/1102
    • feat: admin maintenance and analytics stubs by @hay-kot in https://github.com/hay-kot/mealie/pull/1107
    • feat: add peak toggle for seeing original ingredient txt by @hay-kot in https://github.com/hay-kot/mealie/pull/1111
    • feat: additional cookbook features (tags, tools, and public) by @hay-kot in https://github.com/hay-kot/mealie/pull/1116
    • feat: add on mounted hook for bookmarklets by @hay-kot in https://github.com/hay-kot/mealie/pull/1120
    • Update swag documentation by @zierbeek in https://github.com/hay-kot/mealie/pull/1119
    • feat: docker volume validation by @hay-kot in https://github.com/hay-kot/mealie/pull/1125
    • fix: group creation by @hay-kot in https://github.com/hay-kot/mealie/pull/1126
    • feat: support require_all property for cookbooks by @hay-kot in https://github.com/hay-kot/mealie/pull/1130
    • feat: merge food into another by @hay-kot in https://github.com/hay-kot/mealie/pull/1143
    • feat: add merge units support by @hay-kot in https://github.com/hay-kot/mealie/pull/1146
    • Feature/improve localization by @hay-kot in https://github.com/hay-kot/mealie/pull/1147
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/1149
    • chore: move locales to folder by @hay-kot in https://github.com/hay-kot/mealie/pull/1150
    • chore: drop-apscheduler by @hay-kot in https://github.com/hay-kot/mealie/pull/1152
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/1151
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/1153
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/1155
    • set disable_amount to default to true by @hay-kot in https://github.com/hay-kot/mealie/pull/1158
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/1160
    • Fix failed tests when env default email/password were changed by @Miroito in https://github.com/hay-kot/mealie/pull/1157
    • Allow tags/categories/tools deletion by @Miroito in https://github.com/hay-kot/mealie/pull/1142
    • fix: exception handling for settings page #1092 by @hay-kot in https://github.com/hay-kot/mealie/pull/1169
    • Feature/import keywords as tags by @hay-kot in https://github.com/hay-kot/mealie/pull/1170
    • Fix typos and wording in v1.0.0 docs by @Drumstickx in https://github.com/hay-kot/mealie/pull/1172
    • security: fix unsafe html inputs by @hay-kot in https://github.com/hay-kot/mealie/pull/1173
    • fix:Error when scraper returns None by @Miroito in https://github.com/hay-kot/mealie/pull/1175
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/1174
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/1178
    • fix: error on duplicate username/email registration by @Miroito in https://github.com/hay-kot/mealie/pull/1168
    • Feature/user seedable foods by @hay-kot in https://github.com/hay-kot/mealie/pull/1176
    • Edit docs to fit beta by @zierbeek in https://github.com/hay-kot/mealie/pull/1191
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/1182
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/1200
    • feat: improved registration signup flow by @hay-kot in https://github.com/hay-kot/mealie/pull/1188
    • feat: add food and unit seeding UI by @hay-kot in https://github.com/hay-kot/mealie/pull/1206
    • fix #1144 by @hay-kot in https://github.com/hay-kot/mealie/pull/1207
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/1209
    • Remove obsolete default settings test by @Miroito in https://github.com/hay-kot/mealie/pull/1204
    • feat: show-recipe-scraper-version by @hay-kot in https://github.com/hay-kot/mealie/pull/1210
    • docs: features section and change log update by @hay-kot in https://github.com/hay-kot/mealie/pull/1212
    • chore: change Mealie license to AGPLv3 by @hay-kot in https://github.com/hay-kot/mealie/pull/1213
    • ux: unify UI based on user-feedback by @hay-kot in https://github.com/hay-kot/mealie/pull/1216
    • Improve ingredient sections editing behavior by @Miroito in https://github.com/hay-kot/mealie/pull/1233
    • Fix #1205 by using isomorphic-dompurify by @PFischbeck in https://github.com/hay-kot/mealie/pull/1228
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/1214
    • Pr/1199 updates by @hay-kot in https://github.com/hay-kot/mealie/pull/1234
    • SSL/No Auth Email Support by @nkringle in https://github.com/hay-kot/mealie/pull/1235
    • Consolidate frontend types by @PFischbeck in https://github.com/hay-kot/mealie/pull/1245
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/1247
    • fix: fix data migration (#1183) by @hay-kot in https://github.com/hay-kot/mealie/pull/1248
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/1250
    • fix: recipe ingredient editor bugs by @hay-kot in https://github.com/hay-kot/mealie/pull/1251
    • chore: bump deps by @hay-kot in https://github.com/hay-kot/mealie/pull/1252
    • Docs/update release notes by @hay-kot in https://github.com/hay-kot/mealie/pull/1254
    • chore: github chores by @hay-kot in https://github.com/hay-kot/mealie/pull/1267

    New Contributors

    • @natpuch made their first contribution in https://github.com/hay-kot/mealie/pull/252
    • @pmatarodrigues made their first contribution in https://github.com/hay-kot/mealie/pull/232
    • @cklann1 made their first contribution in https://github.com/hay-kot/mealie/pull/335
    • @CMBoii made their first contribution in https://github.com/hay-kot/mealie/pull/334
    • @pR0Ps made their first contribution in https://github.com/hay-kot/mealie/pull/422
    • @richboss made their first contribution in https://github.com/hay-kot/mealie/pull/582
    • @Tommatheussen made their first contribution in https://github.com/hay-kot/mealie/pull/584
    • @PFischbeck made their first contribution in https://github.com/hay-kot/mealie/pull/888
    • @m42e made their first contribution in https://github.com/hay-kot/mealie/pull/1052
    • @danielpalstra made their first contribution in https://github.com/hay-kot/mealie/pull/1060
    • @Miroito made their first contribution in https://github.com/hay-kot/mealie/pull/1084
    • @Drumstickx made their first contribution in https://github.com/hay-kot/mealie/pull/1172
    • @nkringle made their first contribution in https://github.com/hay-kot/mealie/pull/1235

    Full Changelog: https://github.com/hay-kot/mealie/compare/v0.4.3...v1.0.0-beta-1

    Source code(tar.gz)
    Source code(zip)
  • v0.5.6(Feb 4, 2022)

    What's Changed

    • Fix/image height overflow by @hay-kot in https://github.com/hay-kot/mealie/pull/962 (Closes #961 )

    Full Changelog: https://github.com/hay-kot/mealie/compare/v0.5.5...v0.5.6

    Source code(tar.gz)
    Source code(zip)
  • v0.5.5(Feb 3, 2022)

    What's Changed

    • Allow schema to give images as dict by @cadamswaite in https://github.com/hay-kot/mealie/pull/859
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/854
    • White background favicons-2 by @cadamswaite in https://github.com/hay-kot/mealie/pull/860
    • Add support for fr-CA language by @sephrat in https://github.com/hay-kot/mealie/pull/865
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/886
    • Adjusts the image view from height to min-height by @MidnightRising in https://github.com/hay-kot/mealie/pull/908
    • Trims URL when importing a recipe by @MidnightRising in https://github.com/hay-kot/mealie/pull/909
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/930
    • remove leading and trailing whitespaces from bulk add entries by @StevenMassaro in https://github.com/hay-kot/mealie/pull/921
    • add a line to the docs that clarifies that the run.sh file must have LF line endings by @StevenMassaro in https://github.com/hay-kot/mealie/pull/922
    • Fix version number for 0.5.4 by @fleaz in https://github.com/hay-kot/mealie/pull/957

    New Contributors

    • @StevenMassaro made their first contribution in https://github.com/hay-kot/mealie/pull/921
    • @fleaz made their first contribution in https://github.com/hay-kot/mealie/pull/957

    Full Changelog: https://github.com/hay-kot/mealie/compare/v0.5.4...v0.5.5

    What's Changed

    • Allow schema to give images as dict by @cadamswaite in https://github.com/hay-kot/mealie/pull/859
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/854
    • White background favicons-2 by @cadamswaite in https://github.com/hay-kot/mealie/pull/860
    • Add support for fr-CA language by @sephrat in https://github.com/hay-kot/mealie/pull/865
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/886
    • Adjusts the image view from height to min-height by @MidnightRising in https://github.com/hay-kot/mealie/pull/908
    • Trims URL when importing a recipe by @MidnightRising in https://github.com/hay-kot/mealie/pull/909
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/930
    • remove leading and trailing whitespaces from bulk add entries by @StevenMassaro in https://github.com/hay-kot/mealie/pull/921
    • add a line to the docs that clarifies that the run.sh file must have LF line endings by @StevenMassaro in https://github.com/hay-kot/mealie/pull/922
    • Fix version number for 0.5.4 by @fleaz in https://github.com/hay-kot/mealie/pull/957
    • Fix/version number by @hay-kot in https://github.com/hay-kot/mealie/pull/960

    New Contributors

    • @StevenMassaro made their first contribution in https://github.com/hay-kot/mealie/pull/921
    • @fleaz made their first contribution in https://github.com/hay-kot/mealie/pull/957

    Full Changelog: https://github.com/hay-kot/mealie/compare/v0.5.4...v0.5.5

    Source code(tar.gz)
    Source code(zip)
  • v0.5.4(Dec 2, 2021)

    What's Changed

    • Add support for new languages by @sephrat in https://github.com/hay-kot/mealie/pull/781
    • Allow arrow keys to function when SearchDialog is not open by @asymworks in https://github.com/hay-kot/mealie/pull/777
    • Use firefox user agent when making requests by @cadamswaite in https://github.com/hay-kot/mealie/pull/780
    • Improve the SWAG Community Guide by @BryceStevenWilley in https://github.com/hay-kot/mealie/pull/793
    • New Crowdin updates by @hay-kot in https://github.com/hay-kot/mealie/pull/818
    • Add LDAP authentication support (v2, onto dev) by @dvdkon in https://github.com/hay-kot/mealie/pull/803
    • Chore/bump deps by @hay-kot in https://github.com/hay-kot/mealie/pull/853

    New Contributors

    • @asymworks made their first contribution in https://github.com/hay-kot/mealie/pull/777
    • @dvdkon made their first contribution in https://github.com/hay-kot/mealie/pull/803

    Full Changelog: https://github.com/hay-kot/mealie/compare/v0.5.3...v0.5.4

    Source code(tar.gz)
    Source code(zip)
  • v0.5.3(Nov 1, 2021)

    v0.5.3 - Bug Fixes

    App Version: v0.5.3

    Database Version: v0.5.0

    Breaking Changes

    !!! error "Breaking Changes" #### None

    Bug Fixes

    • 755 - Mealie Categories Not Displaying Until After Settings Opened
    • 748 - categories - Internal Server Error
    • 689 - Importing a recipe with time information
    • 671 - Localization not loading on upgrade to v0.5.2
    • 655 - Clicking on "tags" on a mobile phone doesn't work (Wrong link, "Internal server error")
    • 654 - Ram Usage
    • Fixed Missing minus in shopping list UI 688

    Features and Improvements

    General

    • Recipe Images are now clickable 678
    • Additional Translations
    • Improved Recipe Parser thanks to @cadamswaite
      • URL Scraper will now choose the best image from the list provided by the site
      • Fixed the debugger to provide more meaningful data
      • Fix issues parsing time formats
      • Added support for parsing scraped nutrition details
    Source code(tar.gz)
    Source code(zip)
  • v0.5.1(Jun 17, 2021)

  • v0.5.0(Jun 17, 2021)

  • v0.4.3(Apr 20, 2021)

  • v0.4.2(Apr 17, 2021)

  • v0.4.1a(Apr 9, 2021)

  • v0.4.1(Apr 8, 2021)

  • v0.3.0(Feb 21, 2021)

    v0.3.0

    Bug Fixes

    • Fixed open search on / when in input. - Closes #174
    • Error when importing recipe: KeyError: '@type' - Closes #145
    • Fixed Import Issue - bhg.com - Closes #138
    • Scraper not working with recipe containing HowToSection - Closes #73

    Features and Improvements

    • Improved Nextcloud Imports
    • Improved Recipe Parser!
    • Open search with / hotkey!
    • Database and App version are now split
    • Unified and improved snackbar notifications
    • New Category/Tag endpoints to filter all recipes by Category or Tag
    • Category sidebar now has show/hide behavior on mobile
    • Settings menu on mobile is improved
    • Meal Planner
      • You can now restrict recipe categories used for random meal-plan creation in the settings menu
      • Recipe picker dialog will now display recipes when the search bar is empty
      • Minor UI improvements
      • Shopping lists! Shopping list can now be generated from a meal plan. Currently ingredients are split by recipes or there is a beta feature that attempts to sort them by similarity.
    • Recipe Viewer
      • Categories, Tags, and Notes will now be displayed below the steps on smaller screens
    • Recipe Editor
      • Text areas now auto grow to fit content
      • Description, Steps, and Notes support Markdown! This includes inline html in Markdown.
    • Imports
      • A revamped dialog has been created to provide more information on restoring backups. Exceptions on the backend are now sent to the frontend and are easily viewable to see what went wrong when you restored a backup. This functionality will be ported over to the migrations in a future release.
    Source code(tar.gz)
    Source code(zip)
  • v0.2.1(Feb 11, 2021)

    • Fixes upload image error when no photo was scrapped
    • Use "/" to open recipe search!
    • Fixes no last_recipe.json not updating
    • Added markdown rendering for notes
    • New notifications
    • Minor UI improvements
    • Recipe editor refactor
    • Settings/Theme models refactor
    Source code(tar.gz)
    Source code(zip)
  • v0.2.0(Feb 8, 2021)

    v0.2.0 - Now with Test!

    This is, what I think, is a big release! Tons of new features and some great quality of life improvements with some additional features. You may find that I made promises to include some fixes/features in v0.2.0. The short of is I greatly underestimated the work needed to refactor the database to a usable state and integrate categories in a way that is useful for users. This shouldn't be taken as a sign that I'm dropping those feature requests or ignoring them. I felt it was better to push a release in the current state rather than drag on development to try and fulfill all of the promises I made.

    Database Woes! I have not yet implemented a database migration service. As such, upgrades cannot be done by simply pulling the image. You must first export your recipes, update your deployment, and then import your recipes. This pattern is likely to be how upgrades take place prior to v1.0. After v1.0 migrations will be done automatically.

    Bug Fixes

    • Remove ability to save recipe with no name
    • Fixed data validation error on missing parameters
    • Fixed failed database initialization at startup - Closes #98
    • Fixed misaligned text on various cards
    • Fixed bug that blocked opening links in new tabs - Closes #122
    • Fixed router link bugs - Closes #122
    • Fixed navigation on keyboard selection - Closes #139

    Features and Improvements

    • 🐳 Dockerfile now 1/5 of the size!

    • 🌎 UI Language Selection + Additional Supported Language

    • Home Page

      • By default your homepage will display only the recently added recipes. You can configured sections to show on the home-screen based of categories on the settings page.
      • A new sidebar is now shown on the main page that lists all the categories in the database. Clicking on them navigates into a page that shows only recipes.
      • Basic Sort functionality has been added. More options are on the way!
    • Meal Planner

      • Improved Search (Fuzzy Search)
      • New Scheduled card support
    • Recipe Editor

      • Ingredients are now sortable via drag-and-drop
      • Known categories now show up in the dropdown - Closes 83
      • Initial code for data validation to prevent errors
    • Migrations

      • Card based redesign
      • Upload from the UI
      • Unified Chowdown / Nextcloud import process. (Removed Git as a dependency)
    • API

      • Category and Tag endpoints added
      • Major Endpoint refactor
      • Improved API documentation
      • Link to your Local API is now on your /settings/site. You can use it to explore your API.
    • Style

      • Continued work on button/style unification
      • Adding icons to buttons
      • New Color Theme Picker UI

    Development

    • Fixed Vetur config file. Autocomplete in VSCode works!
    • File/Folder restructuring
    • Added Prettier config
    • Fixed incorrect layout code
    • FastAPI Route tests for major operations - WIP (shallow testing)

    Breaking Changes

    • API endpoints have been refactored to adhere to a more consistent standard. This is a WIP and more changes are likely to occur.
    • Officially Dropped MongoDB Support
    • Database Breaks! We have not yet implemented a database migration service. As such, upgrades cannot be done by simply pulling the image. You must first export your recipes, update your deployment, and then import your recipes. This pattern is likely to be how upgrades take place prior to v1.0. After v1.0 migrations will be done automatically.
    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(Jan 18, 2021)

    Bug Fixes

    • Fixed Can't delete recipe after changing name - Closes Issue #67
    • Fixed No image when added by URL, and can;t add an image - Closes Issue #66
    • Fixed Images saved with no way to delete when add recipe via URL fails - Closes Issue #43

    Features

    • Additional Language Support
    • Improved deployment documentation
    • Additional database! SQlite is now supported! - Closes #48
    • All site data is now backed up.
    • Support for Prep Time, Total Time, and Cook Time field - Closes #63
    • New backup import process with support for themes and site settings
    • BETA ARM support! - Closes #69

    Code / Developer Improvements

    • Unified Database Access Layers
    • Poetry / pyproject.toml support over requirements.txt
    • Local development without database is now possible!
    • Local mkdocs server added to docker-compose.dev.yml
    • Major code refactoring to support new database layer
    • Global variable refactor

    Break Changes

    • Internal docker port is now 80 instead of 9000. You MUST remap the internal port to connect to the UI.
    • As I've adopted the SQL database model I find that using 2 different types of databases will inevitably hinder development. As such after release v0.1.0 support for mongoDB will no longer be available. Prior to upgrading to v0.2.0 you will need to export your site and import after updating. This should be a painless process and require minimal intervention on the users part. Moving forward we will do our best to minimize changes that require user intervention like this and make updates a smooth process.
    Source code(tar.gz)
    Source code(zip)
  • v0.0.2(Jan 9, 2021)

    v0.0.2 - Pre-release Second Patch

    A quality update with major props to zackbcom for working hard on making the theming just that much better!

    Bug Fixes

    • Fixed empty backup failure without markdown template
    • Fixed opacity issues with marked steps - mtoohey31
    • Fixed hot-reloading development environment - grssmnn
    • Fixed recipe not saving without image
    • Fixed parsing error on image property null

    General Improvements

    • Added Confirmation component to deleting recipes - zackbcom
    • Updated Theme backend - zackbcom
    • Added Persistent storage to vuex - zackbcom
    • General Color/Theme Improvements
      • More consistent UI
      • More minimalist coloring
    • Added API key extras to Recipe Data - See Documentation
      • Users can now add custom JSON key/value pairs to all recipes via the editor for access in 3rd part applications. For example, users can add a "message" field in the extras that can be accessed on API calls to play a message over google home.
    • Improved image rendering (nearly x2 speed)
    • Improved documentation + API Documentation
    • Improved recipe parsing
    • User feedback on backup importing
    Source code(tar.gz)
    Source code(zip)
  • v0.0.1(Jan 4, 2021)

    General

    • Fixed opacity issues with marked steps - mtoohey31
    • Updated Favicon
    • Renamed Frontend Window
    • Added Debug folder to dump scraper data prior to processing.
    • Improved documentation
    • Added version tag / relevant links, and new version notifier

    Recipes

    • Added user feedback on bad URL.
    • Better backend data validation for updating recipes, avoid small syntax errors corrupting database entry. Issue #8
    • Fixed spacing issue while editing new recipes in JSON
    Source code(tar.gz)
    Source code(zip)
Owner
Hayden
Aspiring Developer! Looking for work in Web Development
Hayden
🚀 A self-hosted cloud platform application.

Dynamo [IN DEV] You are most likely tired of large corporates selling your data or charging you a lot of money for small cloud services? This is where

Jareer Abdullah 8 Sep 7, 2022
Self Hosted Movie, Series and Anime Watch List

Flox Flox is a self hosted Movie, Series and Animes watch list. It's build on top of Laravel and Vue.js and uses The Movie Database API. The rating ba

Viktor Geringer 1.1k Sep 25, 2022
a simple self-hosted bookmarking app that can import bookmarks from delicious and chrome

bookmarks app a simple self-hosted bookmarking app that can import bookmarks from delicious and chrome Quickstart mkdir -p target/standalone && cd tar

David Yu 143 Sep 13, 2022
Self-hosted audiobook server for managing and playing your audiobooks

AudioBookshelf AudioBookshelf is a self-hosted audiobook server for managing and playing your audiobooks. Currently in Beta - Free & open source Andro

null 1.6k Oct 2, 2022
AudioBookshelf is a self-hosted audiobook server for managing and playing your audiobooks.

Audiobookshelf Mobile App AudioBookshelf is a self-hosted audiobook server for managing and playing your audiobooks. Get the Android app on the Google

null 196 Sep 30, 2022
It is a self-hosted monitoring tool like "Uptime Robot".

Uptime Kuma It is a self-hosted monitoring tool like "Uptime Robot". Features Monitoring uptime for HTTP(s) / TCP / Ping. Fancy, Reactive, Fast UI/UX.

Louis Lam 21.8k Oct 3, 2022
Recipe: E-commerce Website With Django and Vue Tutorial (Django Rest Framework)

e-commerce-django-app-vue Recipe: E-commerce Website With Django and Vue Tutorial (Django Rest Framework) Install and setup django: #Done Creation of

Andrea Camargo 1 May 27, 2022
A simple ecommerce web application built using nodejs, typescript, firebase, AWS S3 & DynamoDB on the backend. With vuejs and vuetify on the frontend.

A simple ecommerce web application built using nodejs, typescript, firebase, AWS S3 & DynamoDB on the backend. With vuejs and vuetify on the frontend.

null 6 Jun 16, 2022
Text-editor-like weekly planner

coypu Text-editor-like weekly planner Build Setup # install dependencies npm install # serve with hot reload at localhost:8080 npm run dev # build f

Bartłomiej Kozal 103 Jun 11, 2022
A simple project planner app.

project-planner Project setup yarn install Compiles and hot-reloads for development yarn serve Compiles and minifies for production yarn build Cust

Shokhrukhbek Yuldoshev 1 Dec 24, 2021
Laravel 8 and Vue family tree and genealogy data processing website.

Genealogia Open Source Family Tree Software Description Browser based Genealogy software for interacting and processing data efficiently. Easily creat

Family Tree 365 291 Oct 4, 2022
TICE is a secure app for meeting up, sharing locations and locating friends and family in real-time.

TICE is a secure app for meeting up, sharing locations and locating friends and family in real-time. TICE allows live location sharing on iOS, Android and the Web. Privacy by Design and modern end-to-end-encryption protect the sensitive location data from others.

TICE Software 9 Apr 28, 2022
Nuxt client for genealogy project. Family tree and genealogy data processing website software client.

Family Tree 365 - Open Source Family Tree Software - Nuxt Client Description Browser based Genealogy software for interacting and processing data effi

Family Tree 365 94 Sep 16, 2022
Starter application template using Piccolo ORM ecosystem as backend and Vue.js as frontend

Starter application template using Piccolo ORM ecosystem (with FastAPI framework) as backend and Vue.js as frontend.

null 4 Sep 8, 2022
Web application for organization of foodsaving groups worldwide - frontend code and central location for feature planning. For server-side code, go to https://github.com/yunity/karrot-backend

A web platform to support foodsaving groups worldwide. ?? ?? ?? karrot (Frontend) (Backend) This is the frontend repository, i.e. the browser-side sof

yunity 348 Oct 1, 2022
Nuxt.js was used in building the frontend of this web application and PHP/mySQL for the backend/database.

sdg-007 Frontend Nuxt.js was used in building the frontend of this web application and PHP/mySQL for the backend/database. About There is a popular sa

Inventors 8 May 20, 2021
Full-stack web application (Backend, Frontend, and Database)

Planny V1 Full-stack web application (Backend, Frontend, and Database) Technologies: Node.js, Javascript, MySQL, Vue.js Date: February 2021 Descriptio

Dominik Bošnjak 0 Jan 3, 2022
A frontend and backend seperated inventory management system implemented with Springboot and Vue

A frontend and backend seperated inventory management system implemented with Springboot and Vue

null 1 May 18, 2022