From d3e41582ae7e7c2fdcfa53fbdaefbbf8cce481a7 Mon Sep 17 00:00:00 2001
From: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
Date: Wed, 8 Apr 2026 17:25:41 +0200
Subject: [PATCH] chore: Nuxt 4 upgrade (#7426)
---
frontend/{ => app}/assets/main.css | 0
.../{ => app}/assets/style-overrides.scss | 0
frontend/{ => app}/assets/variables.scss | 0
.../Domain/Admin/Setup/EndPageContent.vue | 0
.../Domain/Cookbook/CookbookEditor.vue | 0
.../Domain/Cookbook/CookbookPage.vue | 0
.../components/Domain/Group/GroupDataPage.vue | 0
.../Domain/Group/GroupExportData.vue | 0
.../Domain/Group/GroupPreferencesEditor.vue | 0
.../Household/GroupMealPlanDayContextMenu.vue | 0
.../Household/GroupMealPlanRuleForm.vue | 0
.../Domain/Household/GroupWebhookEditor.vue | 0
.../Household/HouseholdPreferencesEditor.vue | 0
.../components/Domain/QueryFilterBuilder.vue | 0
.../Domain/Recipe/RecipeActionMenu.vue | 0
.../components/Domain/Recipe/RecipeAssets.vue | 0
.../components/Domain/Recipe/RecipeCard.vue | 0
.../Domain/Recipe/RecipeCardImage.vue | 0
.../Domain/Recipe/RecipeCardMobile.vue | 0
.../Domain/Recipe/RecipeCardRating.vue | 0
.../Domain/Recipe/RecipeCardSection.vue | 0
.../components/Domain/Recipe/RecipeChips.vue | 0
.../RecipeContextMenu/RecipeContextMenu.vue | 0
.../RecipeContextMenuContent.vue | 0
.../Recipe/RecipeDataAliasManagerDialog.vue | 0
.../Domain/Recipe/RecipeDataTable.vue | 0
.../Recipe/RecipeDialogAddToShoppingList.vue | 0
.../Domain/Recipe/RecipeDialogBulkAdd.vue | 0
.../Recipe/RecipeDialogPrintPreferences.vue | 0
.../Domain/Recipe/RecipeDialogSearch.vue | 0
.../Domain/Recipe/RecipeDialogShare.vue | 0
.../RecipeExplorerPage/RecipeExplorerPage.vue | 0
.../RecipeExplorerPageSearch.vue | 0
.../RecipeExplorerPageSearchFilters.vue | 0
.../Domain/Recipe/RecipeFavoriteBadge.vue | 0
.../Domain/Recipe/RecipeImageUploadBtn.vue | 0
.../Domain/Recipe/RecipeIngredientEditor.vue | 0
.../Domain/Recipe/RecipeIngredientHtml.vue | 0
.../Recipe/RecipeIngredientListItem.vue | 0
.../Domain/Recipe/RecipeIngredients.vue | 0
.../Domain/Recipe/RecipeLastMade.vue | 0
.../components/Domain/Recipe/RecipeList.vue | 0
.../components/Domain/Recipe/RecipeNotes.vue | 0
.../Domain/Recipe/RecipeNutrition.vue | 0
.../Domain/Recipe/RecipeOrganizerDialog.vue | 0
.../Domain/Recipe/RecipeOrganizerPage.vue | 0
.../Domain/Recipe/RecipeOrganizerSelector.vue | 0
.../Domain/Recipe/RecipePage/RecipePage.vue | 0
.../RecipePageParts/RecipePageComments.vue | 2 +-
.../RecipePageEditorToolbar.vue | 0
.../RecipePageParts/RecipePageFooter.vue | 0
.../RecipePageParts/RecipePageHeader.vue | 0
.../RecipePageParts/RecipePageInfoCard.vue | 0
.../RecipePageInfoCardImage.vue | 0
.../RecipePageParts/RecipePageInfoEditor.vue | 0
.../RecipePageIngredientEditor.vue | 0
.../RecipePageIngredientToolsView.vue | 0
.../RecipePageInstructions.vue | 0
.../RecipePageParts/RecipePageOrganizers.vue | 2 +-
.../RecipePageParts/RecipePageParseDialog.vue | 0
.../RecipePageParts/RecipePageScale.vue | 0
.../Domain/Recipe/RecipePrintContainer.vue | 0
.../Domain/Recipe/RecipePrintView.vue | 0
.../components/Domain/Recipe/RecipeRating.vue | 0
.../Domain/Recipe/RecipeScaleEditButton.vue | 0
.../Domain/Recipe/RecipeSettingsMenu.vue | 2 +-
.../Domain/Recipe/RecipeSettingsSwitches.vue | 3 +-
.../Domain/Recipe/RecipeSuggestion.vue | 0
.../Domain/Recipe/RecipeTimeCard.vue | 0
.../Domain/Recipe/RecipeTimeline.vue | 0
.../Domain/Recipe/RecipeTimelineBadge.vue | 0
.../Recipe/RecipeTimelineContextMenu.vue | 2 +-
.../Domain/Recipe/RecipeTimelineItem.vue | 0
.../components/Domain/Recipe/RecipeYield.vue | 0
.../components/Domain/SearchFilter.vue | 0
.../Domain/ShoppingList/MultiPurposeLabel.vue | 0
.../ShoppingList/MultiPurposeLabelSection.vue | 0
.../Domain/ShoppingList/ShoppingListItem.vue | 2 +-
.../ShoppingList/ShoppingListItemEditor.vue | 0
.../components/Domain/User/UserAvatar.vue | 0
.../Domain/User/UserInviteDialog.vue | 0
.../Domain/User/UserPasswordStrength.vue | 0
.../Domain/User/UserProfileLinkCard.vue | 0
.../Domain/User/UserRegistrationForm.vue | 0
.../components/Layout/DefaultLayout.vue | 0
.../Layout/LayoutParts/AppFooter.vue | 0
.../Layout/LayoutParts/AppHeader.vue | 0
.../Layout/LayoutParts/AppScrollToTop.vue | 0
.../Layout/LayoutParts/AppSidebar.vue | 0
.../Layout/LayoutParts/TheSnackbar.vue | 0
frontend/{ => app}/components/README.md | 0
.../components/global/AdvancedOnly.vue | 0
.../components/global/AppButtonCopy.vue | 0
.../components/global/AppButtonUpload.vue | 0
.../{ => app}/components/global/AppLoader.vue | 0
.../{ => app}/components/global/AppLogo.vue | 0
.../components/global/AppToolbar.vue | 0
.../{ => app}/components/global/AutoForm.vue | 0
.../components/global/BannerExperimental.vue | 0
.../components/global/BannerWarning.vue | 0
.../components/global/BaseButton.vue | 0
.../components/global/BaseButtonGroup.vue | 0
.../global/BaseCardSectionTitle.vue | 0
.../components/global/BaseDialog.vue | 0
.../components/global/BaseDivider.vue | 0
.../components/global/BaseExpansionPanels.vue | 0
.../components/global/BaseOverflowButton.vue | 0
.../components/global/BasePageTitle.vue | 0
.../components/global/ButtonLink.vue | 0
.../components/global/ContextMenu.vue | 0
.../{ => app}/components/global/CrudTable.vue | 0
.../components/global/DevDumpJson.vue | 0
.../{ => app}/components/global/DocLink.vue | 0
.../{ => app}/components/global/DropZone.vue | 0
.../{ => app}/components/global/HelpIcon.vue | 0
.../components/global/ImageCropper.vue | 0
.../components/global/InputColor.vue | 0
.../components/global/InputLabelType.vue | 0
.../components/global/LanguageDialog.vue | 0
.../components/global/MarkdownEditor.vue | 0
.../components/global/RecipeJsonEditor.vue | 0
.../components/global/ReportTable.vue | 0
.../components/global/SafeMarkdown.vue | 0
.../components/global/StatsCards.vue | 0
.../components/global/ToggleState.vue | 0
.../components/global/WakelockSwitch.vue | 0
.../{ => app}/composables/api/api-client.ts | 0
frontend/{ => app}/composables/api/index.ts | 0
.../composables/api/static-routes.ts | 0
.../composables/api/use-downloader.ts | 0
frontend/{ => app}/composables/forms/index.ts | 0
.../composables/forms/use-field-types.ts | 0
.../{ => app}/composables/partials/types.ts | 0
.../partials/use-actions-factory.test.ts | 0
.../partials/use-actions-factory.ts | 0
.../composables/partials/use-store-factory.ts | 0
.../composables/recipe-page/shared-state.ts | 0
.../use-extract-ingredient-references.test.ts | 0
.../use-extract-ingredient-references.ts | 0
.../{ => app}/composables/recipes/index.ts | 0
.../composables/recipes/use-fraction.ts | 0
.../recipes/use-recipe-ingredients.test.ts | 0
.../recipes/use-recipe-ingredients.ts | 0
.../recipes/use-recipe-nutrition.ts | 0
.../recipes/use-recipe-permissions.test.ts | 0
.../recipes/use-recipe-permissions.ts | 0
.../composables/recipes/use-recipe-search.ts | 0
.../recipes/use-recipe-timeline-events.ts | 0
.../composables/recipes/use-recipe-tools.ts | 0
.../composables/recipes/use-recipe.ts | 0
.../composables/recipes/use-recipes.ts | 0
.../recipes/use-scaled-amount.test.ts | 0
.../composables/recipes/use-scaled-amount.ts | 0
.../sub-composables/use-shopping-list-copy.ts | 0
.../sub-composables/use-shopping-list-crud.ts | 0
.../sub-composables/use-shopping-list-data.ts | 0
.../use-shopping-list-labels.ts | 0
.../use-shopping-list-recipes.ts | 0
.../use-shopping-list-sorting.ts | 0
.../use-shopping-list-state.ts | 0
.../use-shopping-list-page.ts | 0
frontend/{ => app}/composables/store/index.ts | 0
.../composables/store/use-category-store.ts | 0
.../composables/store/use-cookbook-store.ts | 0
.../composables/store/use-food-store.ts | 0
.../composables/store/use-household-store.ts | 0
.../composables/store/use-label-store.ts | 0
.../composables/store/use-tag-store.ts | 0
.../composables/store/use-tool-store.ts | 0
.../composables/store/use-unit-store.ts | 0
.../composables/store/use-user-store.ts | 0
.../{ => app}/composables/use-auth-backend.ts | 0
frontend/{ => app}/composables/use-backups.ts | 0
.../composables/use-context-presents.ts | 0
frontend/{ => app}/composables/use-copy.ts | 0
.../composables/use-default-activity.ts | 0
.../{ => app}/composables/use-global-i18n.ts | 0
.../composables/use-group-cookbooks.ts | 0
.../composables/use-group-mealplan.ts | 0
.../composables/use-group-recipe-actions.ts | 0
.../composables/use-group-webhooks.ts | 0
frontend/{ => app}/composables/use-groups.ts | 0
.../{ => app}/composables/use-households.ts | 0
.../use-locales/available-locales.ts | 0
.../composables/use-locales/index.ts | 0
.../composables/use-locales/use-locales.ts | 0
.../composables/use-logged-in-state.ts | 0
.../{ => app}/composables/use-mealie-auth.ts | 0
.../composables/use-navigation-warning.ts | 0
.../composables/use-new-recipe-options.ts | 0
.../composables/use-passwords.test.ts | 0
.../{ => app}/composables/use-passwords.ts | 0
.../composables/use-query-filter-builder.ts | 0
.../composables/use-recipe-explorer-search.ts | 0
frontend/{ => app}/composables/use-router.ts | 0
.../composables/use-scroll-position.ts | 0
frontend/{ => app}/composables/use-search.ts | 0
.../use-setup/common-settings-form.ts | 0
.../{ => app}/composables/use-setup/index.ts | 0
.../use-shopping-list-item-actions.ts | 0
.../{ => app}/composables/use-text-color.ts | 0
frontend/{ => app}/composables/use-toast.ts | 0
frontend/{ => app}/composables/use-user.ts | 0
.../{ => app}/composables/use-users/index.ts | 0
.../composables/use-users/preferences.ts | 0
.../composables/use-users/user-form.ts | 0
.../composables/use-users/user-ratings.ts | 0
.../use-users/user-registration-form.ts | 0
.../{ => app}/composables/use-utils.test.ts | 0
frontend/{ => app}/composables/use-utils.ts | 0
.../{ => app}/composables/use-validators.ts | 0
frontend/{ => app}/i18n.config.ts | 0
.../{ => app}/lang/dateTimeFormats/af-ZA.json | 0
.../{ => app}/lang/dateTimeFormats/ar-SA.json | 0
.../{ => app}/lang/dateTimeFormats/bg-BG.json | 0
.../{ => app}/lang/dateTimeFormats/ca-ES.json | 0
.../{ => app}/lang/dateTimeFormats/cs-CZ.json | 0
.../{ => app}/lang/dateTimeFormats/da-DK.json | 0
.../{ => app}/lang/dateTimeFormats/de-DE.json | 0
.../{ => app}/lang/dateTimeFormats/el-GR.json | 0
.../{ => app}/lang/dateTimeFormats/en-GB.json | 0
.../{ => app}/lang/dateTimeFormats/en-US.json | 0
.../{ => app}/lang/dateTimeFormats/es-ES.json | 0
.../{ => app}/lang/dateTimeFormats/et-EE.json | 0
.../{ => app}/lang/dateTimeFormats/fi-FI.json | 0
.../{ => app}/lang/dateTimeFormats/fr-BE.json | 0
.../{ => app}/lang/dateTimeFormats/fr-CA.json | 0
.../{ => app}/lang/dateTimeFormats/fr-FR.json | 0
.../{ => app}/lang/dateTimeFormats/gl-ES.json | 0
.../{ => app}/lang/dateTimeFormats/he-IL.json | 0
.../{ => app}/lang/dateTimeFormats/hr-HR.json | 0
.../{ => app}/lang/dateTimeFormats/hu-HU.json | 0
.../{ => app}/lang/dateTimeFormats/is-IS.json | 0
.../{ => app}/lang/dateTimeFormats/it-IT.json | 0
.../{ => app}/lang/dateTimeFormats/ja-JP.json | 0
.../{ => app}/lang/dateTimeFormats/ko-KR.json | 0
.../{ => app}/lang/dateTimeFormats/lt-LT.json | 0
.../{ => app}/lang/dateTimeFormats/lv-LV.json | 0
.../{ => app}/lang/dateTimeFormats/nl-NL.json | 0
.../{ => app}/lang/dateTimeFormats/no-NO.json | 0
.../{ => app}/lang/dateTimeFormats/pl-PL.json | 0
.../{ => app}/lang/dateTimeFormats/pt-BR.json | 0
.../{ => app}/lang/dateTimeFormats/pt-PT.json | 0
.../{ => app}/lang/dateTimeFormats/ro-RO.json | 0
.../{ => app}/lang/dateTimeFormats/ru-RU.json | 0
.../{ => app}/lang/dateTimeFormats/sk-SK.json | 0
.../{ => app}/lang/dateTimeFormats/sl-SI.json | 0
.../{ => app}/lang/dateTimeFormats/sr-SP.json | 0
.../{ => app}/lang/dateTimeFormats/sv-SE.json | 0
.../{ => app}/lang/dateTimeFormats/tr-TR.json | 0
.../{ => app}/lang/dateTimeFormats/uk-UA.json | 0
.../{ => app}/lang/dateTimeFormats/vi-VN.json | 0
.../{ => app}/lang/dateTimeFormats/zh-CN.json | 0
.../{ => app}/lang/dateTimeFormats/zh-TW.json | 0
frontend/{ => app}/lang/locales/af-ZA.ts | 0
frontend/{ => app}/lang/locales/ar-SA.ts | 0
frontend/{ => app}/lang/locales/bg-BG.ts | 0
frontend/{ => app}/lang/locales/ca-ES.ts | 0
frontend/{ => app}/lang/locales/cs-CZ.ts | 0
frontend/{ => app}/lang/locales/da-DK.ts | 0
frontend/{ => app}/lang/locales/de-DE.ts | 0
frontend/{ => app}/lang/locales/el-GR.ts | 0
frontend/{ => app}/lang/locales/en-GB.ts | 0
frontend/{ => app}/lang/locales/en-US.ts | 0
frontend/{ => app}/lang/locales/es-ES.ts | 0
frontend/{ => app}/lang/locales/et-EE.ts | 0
frontend/{ => app}/lang/locales/fi-FI.ts | 0
frontend/{ => app}/lang/locales/fr-BE.ts | 0
frontend/{ => app}/lang/locales/fr-CA.ts | 0
frontend/{ => app}/lang/locales/fr-FR.ts | 0
frontend/{ => app}/lang/locales/gl-ES.ts | 0
frontend/{ => app}/lang/locales/he-IL.ts | 0
frontend/{ => app}/lang/locales/hr-HR.ts | 0
frontend/{ => app}/lang/locales/hu-HU.ts | 0
frontend/{ => app}/lang/locales/is-IS.ts | 0
frontend/{ => app}/lang/locales/it-IT.ts | 0
frontend/{ => app}/lang/locales/ja-JP.ts | 0
frontend/{ => app}/lang/locales/ko-KR.ts | 0
frontend/{ => app}/lang/locales/lt-LT.ts | 0
frontend/{ => app}/lang/locales/lv-LV.ts | 0
frontend/{ => app}/lang/locales/nl-NL.ts | 0
frontend/{ => app}/lang/locales/no-NO.ts | 0
frontend/{ => app}/lang/locales/pl-PL.ts | 0
frontend/{ => app}/lang/locales/pt-BR.ts | 0
frontend/{ => app}/lang/locales/pt-PT.ts | 0
frontend/{ => app}/lang/locales/ro-RO.ts | 0
frontend/{ => app}/lang/locales/ru-RU.ts | 0
frontend/{ => app}/lang/locales/sk-SK.ts | 0
frontend/{ => app}/lang/locales/sl-SI.ts | 0
frontend/{ => app}/lang/locales/sr-SP.ts | 0
frontend/{ => app}/lang/locales/sv-SE.ts | 0
frontend/{ => app}/lang/locales/tr-TR.ts | 0
frontend/{ => app}/lang/locales/uk-UA.ts | 0
frontend/{ => app}/lang/locales/vi-VN.ts | 0
frontend/{ => app}/lang/locales/zh-CN.ts | 0
frontend/{ => app}/lang/locales/zh-TW.ts | 0
frontend/{ => app}/lang/messages/af-ZA.json | 0
frontend/{ => app}/lang/messages/ar-SA.json | 0
frontend/{ => app}/lang/messages/bg-BG.json | 0
frontend/{ => app}/lang/messages/ca-ES.json | 0
frontend/{ => app}/lang/messages/cs-CZ.json | 0
frontend/{ => app}/lang/messages/da-DK.json | 0
frontend/{ => app}/lang/messages/de-DE.json | 0
frontend/{ => app}/lang/messages/el-GR.json | 0
frontend/{ => app}/lang/messages/en-GB.json | 0
frontend/{ => app}/lang/messages/en-US.json | 0
frontend/{ => app}/lang/messages/es-ES.json | 0
frontend/{ => app}/lang/messages/et-EE.json | 0
frontend/{ => app}/lang/messages/fi-FI.json | 0
frontend/{ => app}/lang/messages/fr-BE.json | 0
frontend/{ => app}/lang/messages/fr-CA.json | 0
frontend/{ => app}/lang/messages/fr-FR.json | 0
frontend/{ => app}/lang/messages/gl-ES.json | 0
frontend/{ => app}/lang/messages/he-IL.json | 0
frontend/{ => app}/lang/messages/hr-HR.json | 0
frontend/{ => app}/lang/messages/hu-HU.json | 0
frontend/{ => app}/lang/messages/is-IS.json | 0
frontend/{ => app}/lang/messages/it-IT.json | 0
frontend/{ => app}/lang/messages/ja-JP.json | 0
frontend/{ => app}/lang/messages/ko-KR.json | 0
frontend/{ => app}/lang/messages/lt-LT.json | 0
frontend/{ => app}/lang/messages/lv-LV.json | 0
frontend/{ => app}/lang/messages/nl-NL.json | 0
frontend/{ => app}/lang/messages/no-NO.json | 0
frontend/{ => app}/lang/messages/pl-PL.json | 0
frontend/{ => app}/lang/messages/pt-BR.json | 0
frontend/{ => app}/lang/messages/pt-PT.json | 0
frontend/{ => app}/lang/messages/ro-RO.json | 0
frontend/{ => app}/lang/messages/ru-RU.json | 0
frontend/{ => app}/lang/messages/sk-SK.json | 0
frontend/{ => app}/lang/messages/sl-SI.json | 0
frontend/{ => app}/lang/messages/sr-SP.json | 0
frontend/{ => app}/lang/messages/sv-SE.json | 0
frontend/{ => app}/lang/messages/tr-TR.json | 0
frontend/{ => app}/lang/messages/uk-UA.json | 0
frontend/{ => app}/lang/messages/vi-VN.json | 0
frontend/{ => app}/lang/messages/zh-CN.json | 0
frontend/{ => app}/lang/messages/zh-TW.json | 0
frontend/{ => app}/layouts/admin.vue | 0
frontend/{ => app}/layouts/basic.vue | 0
frontend/{ => app}/layouts/blank.vue | 6 +-
frontend/{ => app}/layouts/default.vue | 0
frontend/{ => app}/layouts/error.vue | 0
.../{ => app}/lib/api/admin/admin-about.ts | 0
.../lib/api/admin/admin-analytics.ts | 0
.../{ => app}/lib/api/admin/admin-backups.ts | 0
.../{ => app}/lib/api/admin/admin-debug.ts | 0
.../{ => app}/lib/api/admin/admin-groups.ts | 0
.../lib/api/admin/admin-households.ts | 0
.../lib/api/admin/admin-maintenance.ts | 0
.../{ => app}/lib/api/admin/admin-users.ts | 0
.../{ => app}/lib/api/base/base-clients.ts | 0
frontend/{ => app}/lib/api/base/index.ts | 0
frontend/{ => app}/lib/api/base/route.ts | 0
.../{ => app}/lib/api/base/routes.test.ts | 0
frontend/{ => app}/lib/api/client-admin.ts | 0
frontend/{ => app}/lib/api/client-public.ts | 0
frontend/{ => app}/lib/api/client-user.ts | 0
frontend/{ => app}/lib/api/config.ts | 0
frontend/{ => app}/lib/api/index.ts | 0
frontend/{ => app}/lib/api/public/explore.ts | 0
.../lib/api/public/explore/cookbooks.ts | 0
.../{ => app}/lib/api/public/explore/foods.ts | 0
.../lib/api/public/explore/households.ts | 0
.../lib/api/public/explore/organizers.ts | 0
.../lib/api/public/explore/recipes.ts | 0
frontend/{ => app}/lib/api/public/shared.ts | 0
.../{ => app}/lib/api/public/validators.ts | 0
frontend/{ => app}/lib/api/types/activity.ts | 0
frontend/{ => app}/lib/api/types/admin.ts | 0
frontend/{ => app}/lib/api/types/analytics.ts | 0
frontend/{ => app}/lib/api/types/cookbook.ts | 0
frontend/{ => app}/lib/api/types/events.ts | 0
frontend/{ => app}/lib/api/types/group.ts | 0
frontend/{ => app}/lib/api/types/household.ts | 0
frontend/{ => app}/lib/api/types/labels.ts | 0
frontend/{ => app}/lib/api/types/meal-plan.ts | 0
.../{ => app}/lib/api/types/non-generated.ts | 0
frontend/{ => app}/lib/api/types/openai.ts | 0
frontend/{ => app}/lib/api/types/recipe.ts | 0
frontend/{ => app}/lib/api/types/reports.ts | 0
frontend/{ => app}/lib/api/types/response.ts | 0
frontend/{ => app}/lib/api/types/static.ts | 0
frontend/{ => app}/lib/api/types/user.ts | 0
frontend/{ => app}/lib/api/user/backups.ts | 0
frontend/{ => app}/lib/api/user/email.ts | 0
.../{ => app}/lib/api/user/group-cookbooks.ts | 0
.../lib/api/user/group-event-notifier.ts | 0
.../lib/api/user/group-mealplan-rules.ts | 0
.../{ => app}/lib/api/user/group-mealplan.ts | 0
.../lib/api/user/group-migrations.ts | 0
.../api/user/group-multiple-purpose-labels.ts | 0
.../lib/api/user/group-recipe-actions.ts | 0
.../{ => app}/lib/api/user/group-reports.ts | 0
.../{ => app}/lib/api/user/group-seeder.ts | 0
.../lib/api/user/group-shopping-lists.ts | 0
.../{ => app}/lib/api/user/group-webhooks.ts | 0
frontend/{ => app}/lib/api/user/groups.ts | 0
frontend/{ => app}/lib/api/user/households.ts | 0
.../lib/api/user/organizer-categories.ts | 0
.../{ => app}/lib/api/user/organizer-tags.ts | 0
.../{ => app}/lib/api/user/organizer-tools.ts | 0
.../lib/api/user/recipe-bulk-actions.ts | 0
.../{ => app}/lib/api/user/recipe-foods.ts | 0
.../{ => app}/lib/api/user/recipe-units.ts | 0
.../{ => app}/lib/api/user/recipes/index.ts | 0
.../lib/api/user/recipes/recipe-comments.ts | 0
.../lib/api/user/recipes/recipe-share.ts | 0
.../{ => app}/lib/api/user/recipes/recipe.ts | 0
frontend/{ => app}/lib/api/user/upload.ts | 0
.../lib/api/user/user-registration.ts | 0
frontend/{ => app}/lib/api/user/users.ts | 0
frontend/{ => app}/lib/api/user/utils.ts | 0
frontend/{ => app}/lib/icons/icon-type.ts | 0
frontend/{ => app}/lib/icons/icons.ts | 0
frontend/{ => app}/lib/icons/index.ts | 0
frontend/{ => app}/lib/validators/index.ts | 0
.../{ => app}/lib/validators/inputs.test.ts | 0
frontend/{ => app}/lib/validators/inputs.ts | 0
.../{ => app}/lib/validators/password.test.ts | 0
frontend/{ => app}/lib/validators/password.ts | 0
frontend/{ => app}/middleware/admin-only.ts | 0
.../{ => app}/middleware/advanced-only.ts | 0
.../middleware/can-manage-household-only.ts | 0
.../{ => app}/middleware/can-manage-only.ts | 0
.../{ => app}/middleware/can-organize-only.ts | 0
frontend/{ => app}/middleware/group-only.ts | 0
.../pwa-share-target-redirect.global.ts | 0
frontend/{ => app}/pages/admin.vue | 0
frontend/{ => app}/pages/admin/backups.vue | 0
.../{ => app}/pages/admin/debug/openai.vue | 0
.../{ => app}/pages/admin/debug/parser.vue | 0
.../pages/admin/maintenance/index.vue | 0
.../pages/admin/manage/groups/[id].vue | 0
.../pages/admin/manage/groups/index.vue | 0
.../pages/admin/manage/households/[id].vue | 0
.../pages/admin/manage/households/index.vue | 0
.../pages/admin/manage/users/[id].vue | 0
.../pages/admin/manage/users/create.vue | 0
.../pages/admin/manage/users/index.vue | 0
frontend/{ => app}/pages/admin/setup.vue | 0
.../{ => app}/pages/admin/site-settings.vue | 0
frontend/{ => app}/pages/forgot-password.vue | 0
.../pages/g/[groupSlug]/cookbooks/[slug].vue | 0
.../pages/g/[groupSlug]/cookbooks/index.vue | 0
.../{ => app}/pages/g/[groupSlug]/index.vue | 0
.../pages/g/[groupSlug]/r/[slug]/index.vue | 0
.../pages/g/[groupSlug]/r/create.vue | 0
.../pages/g/[groupSlug]/r/create/bulk.vue | 0
.../pages/g/[groupSlug]/r/create/debug.vue | 0
.../pages/g/[groupSlug]/r/create/html.vue | 0
.../pages/g/[groupSlug]/r/create/image.vue | 0
.../pages/g/[groupSlug]/r/create/index.vue | 0
.../pages/g/[groupSlug]/r/create/new.vue | 0
.../pages/g/[groupSlug]/r/create/url.vue | 0
.../pages/g/[groupSlug]/r/create/zip.vue | 0
.../[groupSlug]/recipes/categories/index.vue | 0
.../g/[groupSlug]/recipes/finder/index.vue | 0
.../g/[groupSlug]/recipes/tags/index.vue | 0
.../pages/g/[groupSlug]/recipes/timeline.vue | 0
.../g/[groupSlug]/recipes/tools/index.vue | 0
.../pages/g/[groupSlug]/shared/r/[id].vue | 0
frontend/{ => app}/pages/group/data.vue | 0
.../{ => app}/pages/group/data/categories.vue | 0
frontend/{ => app}/pages/group/data/foods.vue | 0
frontend/{ => app}/pages/group/data/index.vue | 0
.../{ => app}/pages/group/data/labels.vue | 0
.../pages/group/data/recipe-actions.vue | 0
.../{ => app}/pages/group/data/recipes.vue | 0
frontend/{ => app}/pages/group/data/tags.vue | 0
frontend/{ => app}/pages/group/data/tools.vue | 0
frontend/{ => app}/pages/group/data/units.vue | 0
frontend/{ => app}/pages/group/index.vue | 0
frontend/{ => app}/pages/group/migrations.vue | 0
.../{ => app}/pages/group/reports/[id].vue | 0
frontend/{ => app}/pages/household/index.vue | 0
.../pages/household/mealplan/planner.vue | 0
.../pages/household/mealplan/planner/edit.vue | 2 +-
.../pages/household/mealplan/planner/view.vue | 6 +-
.../pages/household/mealplan/settings.vue | 0
.../{ => app}/pages/household/members.vue | 0
.../{ => app}/pages/household/notifiers.vue | 0
.../{ => app}/pages/household/webhooks.vue | 0
frontend/{ => app}/pages/index.vue | 0
frontend/{ => app}/pages/login.vue | 0
frontend/{ => app}/pages/register/index.vue | 0
frontend/{ => app}/pages/register/states.ts | 0
frontend/{ => app}/pages/reset-password.vue | 0
.../{ => app}/pages/shopping-lists/[id].vue | 0
.../{ => app}/pages/shopping-lists/index.vue | 0
.../{ => app}/pages/user/[id]/favorites.vue | 0
.../pages/user/profile/api-tokens.vue | 0
.../{ => app}/pages/user/profile/edit.vue | 0
.../{ => app}/pages/user/profile/index.vue | 0
frontend/{ => app}/plugins/app-info.client.ts | 0
frontend/{ => app}/plugins/axios.ts | 0
.../{ => app}/plugins/dark-mode.client.ts | 0
frontend/{ => app}/plugins/globals.ts | 0
.../{ => app}/plugins/init-auth.client.ts | 0
frontend/{ => app}/plugins/theme.ts | 0
frontend/{ => app}/tests/utils.ts | 0
frontend/{ => app}/types/application-types.ts | 0
frontend/{ => app}/types/auth.d.ts | 0
frontend/{ => app}/types/auto-forms.ts | 0
frontend/{ => app}/types/components.d.ts | 0
frontend/{ => app}/types/recipe/organizers.ts | 0
frontend/{ => app}/types/ts-shim.d.ts | 0
frontend/nuxt.config.ts | 11 +-
frontend/package.json | 7 +-
.../pages/household/mealplan/planner/types.ts | 6 -
frontend/{static => public}/account.png | Bin
frontend/{static => public}/discord.svg | 0
.../{static => public}/fallback-profile.webp | Bin
frontend/{static => public}/favicon.ico | Bin
frontend/{static => public}/gotify.png | Bin
.../{static => public}/home-assistant.png | Bin
frontend/{static => public}/icon.png | Bin
.../icons/android-chrome-192x192.png | Bin
.../icons/android-chrome-512x512.png | Bin
.../icons/android-chrome-maskable-192x192.png | Bin
.../icons/android-chrome-maskable-512x512.png | Bin
.../icons/apple-touch-icon.png | Bin
.../icons/favicon-16x16.png | Bin
.../icons/favicon-32x32.png | Bin
.../{static => public}/icons/icon-x64.png | Bin
.../icons/mdiCalendarMultiselect-192x192.png | Bin
.../icons/mdiCalendarMultiselect-96x96.png | Bin
.../icons/mdiFormatListChecks-192x192.png | Bin
.../icons/mdiFormatListChecks-96x96.png | Bin
.../icons/mstile-150x150.png | Bin
.../icons/safari-pinned-tab.svg | 0
frontend/{static => public}/matrix.png | Bin
.../mealie-email-banner.png | Bin
frontend/{static => public}/pushover.svg | 0
frontend/{static => public}/robots.txt | 0
.../screenshots/editor-narrow.png | Bin
.../screenshots/editor-wide.png | Bin
.../screenshots/home-narrow.png | Bin
.../screenshots/home-wide.png | Bin
.../screenshots/parser-narrow.png | Bin
.../screenshots/parser-wide.png | Bin
.../screenshots/recipe-narrow.png | Bin
.../screenshots/recipe-wide.png | Bin
.../svgs/admin-site-settings.svg | 0
.../{static => public}/svgs/data-reports.svg | 0
.../svgs/manage-api-tokens.svg | 0
.../svgs/manage-cookbooks.svg | 0
.../svgs/manage-data-migrations.svg | 0
.../svgs/manage-group-settings.svg | 0
.../svgs/manage-members.svg | 0
.../svgs/manage-notifiers.svg | 0
.../svgs/manage-profile.svg | 0
.../svgs/manage-recipes.svg | 0
.../{static => public}/svgs/manage-tasks.svg | 0
.../svgs/manage-webhooks.svg | 0
.../svgs/recipes-create.svg | 0
.../{static => public}/svgs/shopping-cart.svg | 0
frontend/store/README.md | 10 -
frontend/store/index.js | 1 -
frontend/vitest.config.js | 6 +-
frontend/yarn.lock | 4522 +++++++----------
561 files changed, 1840 insertions(+), 2750 deletions(-)
rename frontend/{ => app}/assets/main.css (100%)
rename frontend/{ => app}/assets/style-overrides.scss (100%)
rename frontend/{ => app}/assets/variables.scss (100%)
rename frontend/{ => app}/components/Domain/Admin/Setup/EndPageContent.vue (100%)
rename frontend/{ => app}/components/Domain/Cookbook/CookbookEditor.vue (100%)
rename frontend/{ => app}/components/Domain/Cookbook/CookbookPage.vue (100%)
rename frontend/{ => app}/components/Domain/Group/GroupDataPage.vue (100%)
rename frontend/{ => app}/components/Domain/Group/GroupExportData.vue (100%)
rename frontend/{ => app}/components/Domain/Group/GroupPreferencesEditor.vue (100%)
rename frontend/{ => app}/components/Domain/Household/GroupMealPlanDayContextMenu.vue (100%)
rename frontend/{ => app}/components/Domain/Household/GroupMealPlanRuleForm.vue (100%)
rename frontend/{ => app}/components/Domain/Household/GroupWebhookEditor.vue (100%)
rename frontend/{ => app}/components/Domain/Household/HouseholdPreferencesEditor.vue (100%)
rename frontend/{ => app}/components/Domain/QueryFilterBuilder.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeActionMenu.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeAssets.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeCard.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeCardImage.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeCardMobile.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeCardRating.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeCardSection.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeChips.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeContextMenu/RecipeContextMenu.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeContextMenu/RecipeContextMenuContent.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeDataAliasManagerDialog.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeDataTable.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeDialogAddToShoppingList.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeDialogBulkAdd.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeDialogPrintPreferences.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeDialogSearch.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeDialogShare.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeExplorerPage/RecipeExplorerPage.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeExplorerPage/RecipeExplorerPageParts/RecipeExplorerPageSearch.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeExplorerPage/RecipeExplorerPageParts/RecipeExplorerPageSearchFilters.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeFavoriteBadge.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeImageUploadBtn.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeIngredientEditor.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeIngredientHtml.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeIngredientListItem.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeIngredients.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeLastMade.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeList.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeNotes.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeNutrition.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeOrganizerDialog.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeOrganizerPage.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeOrganizerSelector.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipePage/RecipePage.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipePage/RecipePageParts/RecipePageComments.vue (99%)
rename frontend/{ => app}/components/Domain/Recipe/RecipePage/RecipePageParts/RecipePageEditorToolbar.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipePage/RecipePageParts/RecipePageFooter.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipePage/RecipePageParts/RecipePageHeader.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipePage/RecipePageParts/RecipePageInfoCard.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipePage/RecipePageParts/RecipePageInfoCardImage.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipePage/RecipePageParts/RecipePageInfoEditor.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipePage/RecipePageParts/RecipePageIngredientEditor.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipePage/RecipePageParts/RecipePageIngredientToolsView.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipePage/RecipePageParts/RecipePageInstructions.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipePage/RecipePageParts/RecipePageOrganizers.vue (99%)
rename frontend/{ => app}/components/Domain/Recipe/RecipePage/RecipePageParts/RecipePageParseDialog.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipePage/RecipePageParts/RecipePageScale.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipePrintContainer.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipePrintView.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeRating.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeScaleEditButton.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeSettingsMenu.vue (97%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeSettingsSwitches.vue (92%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeSuggestion.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeTimeCard.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeTimeline.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeTimelineBadge.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeTimelineContextMenu.vue (99%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeTimelineItem.vue (100%)
rename frontend/{ => app}/components/Domain/Recipe/RecipeYield.vue (100%)
rename frontend/{ => app}/components/Domain/SearchFilter.vue (100%)
rename frontend/{ => app}/components/Domain/ShoppingList/MultiPurposeLabel.vue (100%)
rename frontend/{ => app}/components/Domain/ShoppingList/MultiPurposeLabelSection.vue (100%)
rename frontend/{ => app}/components/Domain/ShoppingList/ShoppingListItem.vue (99%)
rename frontend/{ => app}/components/Domain/ShoppingList/ShoppingListItemEditor.vue (100%)
rename frontend/{ => app}/components/Domain/User/UserAvatar.vue (100%)
rename frontend/{ => app}/components/Domain/User/UserInviteDialog.vue (100%)
rename frontend/{ => app}/components/Domain/User/UserPasswordStrength.vue (100%)
rename frontend/{ => app}/components/Domain/User/UserProfileLinkCard.vue (100%)
rename frontend/{ => app}/components/Domain/User/UserRegistrationForm.vue (100%)
rename frontend/{ => app}/components/Layout/DefaultLayout.vue (100%)
rename frontend/{ => app}/components/Layout/LayoutParts/AppFooter.vue (100%)
rename frontend/{ => app}/components/Layout/LayoutParts/AppHeader.vue (100%)
rename frontend/{ => app}/components/Layout/LayoutParts/AppScrollToTop.vue (100%)
rename frontend/{ => app}/components/Layout/LayoutParts/AppSidebar.vue (100%)
rename frontend/{ => app}/components/Layout/LayoutParts/TheSnackbar.vue (100%)
rename frontend/{ => app}/components/README.md (100%)
rename frontend/{ => app}/components/global/AdvancedOnly.vue (100%)
rename frontend/{ => app}/components/global/AppButtonCopy.vue (100%)
rename frontend/{ => app}/components/global/AppButtonUpload.vue (100%)
rename frontend/{ => app}/components/global/AppLoader.vue (100%)
rename frontend/{ => app}/components/global/AppLogo.vue (100%)
rename frontend/{ => app}/components/global/AppToolbar.vue (100%)
rename frontend/{ => app}/components/global/AutoForm.vue (100%)
rename frontend/{ => app}/components/global/BannerExperimental.vue (100%)
rename frontend/{ => app}/components/global/BannerWarning.vue (100%)
rename frontend/{ => app}/components/global/BaseButton.vue (100%)
rename frontend/{ => app}/components/global/BaseButtonGroup.vue (100%)
rename frontend/{ => app}/components/global/BaseCardSectionTitle.vue (100%)
rename frontend/{ => app}/components/global/BaseDialog.vue (100%)
rename frontend/{ => app}/components/global/BaseDivider.vue (100%)
rename frontend/{ => app}/components/global/BaseExpansionPanels.vue (100%)
rename frontend/{ => app}/components/global/BaseOverflowButton.vue (100%)
rename frontend/{ => app}/components/global/BasePageTitle.vue (100%)
rename frontend/{ => app}/components/global/ButtonLink.vue (100%)
rename frontend/{ => app}/components/global/ContextMenu.vue (100%)
rename frontend/{ => app}/components/global/CrudTable.vue (100%)
rename frontend/{ => app}/components/global/DevDumpJson.vue (100%)
rename frontend/{ => app}/components/global/DocLink.vue (100%)
rename frontend/{ => app}/components/global/DropZone.vue (100%)
rename frontend/{ => app}/components/global/HelpIcon.vue (100%)
rename frontend/{ => app}/components/global/ImageCropper.vue (100%)
rename frontend/{ => app}/components/global/InputColor.vue (100%)
rename frontend/{ => app}/components/global/InputLabelType.vue (100%)
rename frontend/{ => app}/components/global/LanguageDialog.vue (100%)
rename frontend/{ => app}/components/global/MarkdownEditor.vue (100%)
rename frontend/{ => app}/components/global/RecipeJsonEditor.vue (100%)
rename frontend/{ => app}/components/global/ReportTable.vue (100%)
rename frontend/{ => app}/components/global/SafeMarkdown.vue (100%)
rename frontend/{ => app}/components/global/StatsCards.vue (100%)
rename frontend/{ => app}/components/global/ToggleState.vue (100%)
rename frontend/{ => app}/components/global/WakelockSwitch.vue (100%)
rename frontend/{ => app}/composables/api/api-client.ts (100%)
rename frontend/{ => app}/composables/api/index.ts (100%)
rename frontend/{ => app}/composables/api/static-routes.ts (100%)
rename frontend/{ => app}/composables/api/use-downloader.ts (100%)
rename frontend/{ => app}/composables/forms/index.ts (100%)
rename frontend/{ => app}/composables/forms/use-field-types.ts (100%)
rename frontend/{ => app}/composables/partials/types.ts (100%)
rename frontend/{ => app}/composables/partials/use-actions-factory.test.ts (100%)
rename frontend/{ => app}/composables/partials/use-actions-factory.ts (100%)
rename frontend/{ => app}/composables/partials/use-store-factory.ts (100%)
rename frontend/{ => app}/composables/recipe-page/shared-state.ts (100%)
rename frontend/{ => app}/composables/recipe-page/use-extract-ingredient-references.test.ts (100%)
rename frontend/{ => app}/composables/recipe-page/use-extract-ingredient-references.ts (100%)
rename frontend/{ => app}/composables/recipes/index.ts (100%)
rename frontend/{ => app}/composables/recipes/use-fraction.ts (100%)
rename frontend/{ => app}/composables/recipes/use-recipe-ingredients.test.ts (100%)
rename frontend/{ => app}/composables/recipes/use-recipe-ingredients.ts (100%)
rename frontend/{ => app}/composables/recipes/use-recipe-nutrition.ts (100%)
rename frontend/{ => app}/composables/recipes/use-recipe-permissions.test.ts (100%)
rename frontend/{ => app}/composables/recipes/use-recipe-permissions.ts (100%)
rename frontend/{ => app}/composables/recipes/use-recipe-search.ts (100%)
rename frontend/{ => app}/composables/recipes/use-recipe-timeline-events.ts (100%)
rename frontend/{ => app}/composables/recipes/use-recipe-tools.ts (100%)
rename frontend/{ => app}/composables/recipes/use-recipe.ts (100%)
rename frontend/{ => app}/composables/recipes/use-recipes.ts (100%)
rename frontend/{ => app}/composables/recipes/use-scaled-amount.test.ts (100%)
rename frontend/{ => app}/composables/recipes/use-scaled-amount.ts (100%)
rename frontend/{ => app}/composables/shopping-list-page/sub-composables/use-shopping-list-copy.ts (100%)
rename frontend/{ => app}/composables/shopping-list-page/sub-composables/use-shopping-list-crud.ts (100%)
rename frontend/{ => app}/composables/shopping-list-page/sub-composables/use-shopping-list-data.ts (100%)
rename frontend/{ => app}/composables/shopping-list-page/sub-composables/use-shopping-list-labels.ts (100%)
rename frontend/{ => app}/composables/shopping-list-page/sub-composables/use-shopping-list-recipes.ts (100%)
rename frontend/{ => app}/composables/shopping-list-page/sub-composables/use-shopping-list-sorting.ts (100%)
rename frontend/{ => app}/composables/shopping-list-page/sub-composables/use-shopping-list-state.ts (100%)
rename frontend/{ => app}/composables/shopping-list-page/use-shopping-list-page.ts (100%)
rename frontend/{ => app}/composables/store/index.ts (100%)
rename frontend/{ => app}/composables/store/use-category-store.ts (100%)
rename frontend/{ => app}/composables/store/use-cookbook-store.ts (100%)
rename frontend/{ => app}/composables/store/use-food-store.ts (100%)
rename frontend/{ => app}/composables/store/use-household-store.ts (100%)
rename frontend/{ => app}/composables/store/use-label-store.ts (100%)
rename frontend/{ => app}/composables/store/use-tag-store.ts (100%)
rename frontend/{ => app}/composables/store/use-tool-store.ts (100%)
rename frontend/{ => app}/composables/store/use-unit-store.ts (100%)
rename frontend/{ => app}/composables/store/use-user-store.ts (100%)
rename frontend/{ => app}/composables/use-auth-backend.ts (100%)
rename frontend/{ => app}/composables/use-backups.ts (100%)
rename frontend/{ => app}/composables/use-context-presents.ts (100%)
rename frontend/{ => app}/composables/use-copy.ts (100%)
rename frontend/{ => app}/composables/use-default-activity.ts (100%)
rename frontend/{ => app}/composables/use-global-i18n.ts (100%)
rename frontend/{ => app}/composables/use-group-cookbooks.ts (100%)
rename frontend/{ => app}/composables/use-group-mealplan.ts (100%)
rename frontend/{ => app}/composables/use-group-recipe-actions.ts (100%)
rename frontend/{ => app}/composables/use-group-webhooks.ts (100%)
rename frontend/{ => app}/composables/use-groups.ts (100%)
rename frontend/{ => app}/composables/use-households.ts (100%)
rename frontend/{ => app}/composables/use-locales/available-locales.ts (100%)
rename frontend/{ => app}/composables/use-locales/index.ts (100%)
rename frontend/{ => app}/composables/use-locales/use-locales.ts (100%)
rename frontend/{ => app}/composables/use-logged-in-state.ts (100%)
rename frontend/{ => app}/composables/use-mealie-auth.ts (100%)
rename frontend/{ => app}/composables/use-navigation-warning.ts (100%)
rename frontend/{ => app}/composables/use-new-recipe-options.ts (100%)
rename frontend/{ => app}/composables/use-passwords.test.ts (100%)
rename frontend/{ => app}/composables/use-passwords.ts (100%)
rename frontend/{ => app}/composables/use-query-filter-builder.ts (100%)
rename frontend/{ => app}/composables/use-recipe-explorer-search.ts (100%)
rename frontend/{ => app}/composables/use-router.ts (100%)
rename frontend/{ => app}/composables/use-scroll-position.ts (100%)
rename frontend/{ => app}/composables/use-search.ts (100%)
rename frontend/{ => app}/composables/use-setup/common-settings-form.ts (100%)
rename frontend/{ => app}/composables/use-setup/index.ts (100%)
rename frontend/{ => app}/composables/use-shopping-list-item-actions.ts (100%)
rename frontend/{ => app}/composables/use-text-color.ts (100%)
rename frontend/{ => app}/composables/use-toast.ts (100%)
rename frontend/{ => app}/composables/use-user.ts (100%)
rename frontend/{ => app}/composables/use-users/index.ts (100%)
rename frontend/{ => app}/composables/use-users/preferences.ts (100%)
rename frontend/{ => app}/composables/use-users/user-form.ts (100%)
rename frontend/{ => app}/composables/use-users/user-ratings.ts (100%)
rename frontend/{ => app}/composables/use-users/user-registration-form.ts (100%)
rename frontend/{ => app}/composables/use-utils.test.ts (100%)
rename frontend/{ => app}/composables/use-utils.ts (100%)
rename frontend/{ => app}/composables/use-validators.ts (100%)
rename frontend/{ => app}/i18n.config.ts (100%)
rename frontend/{ => app}/lang/dateTimeFormats/af-ZA.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/ar-SA.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/bg-BG.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/ca-ES.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/cs-CZ.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/da-DK.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/de-DE.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/el-GR.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/en-GB.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/en-US.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/es-ES.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/et-EE.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/fi-FI.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/fr-BE.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/fr-CA.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/fr-FR.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/gl-ES.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/he-IL.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/hr-HR.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/hu-HU.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/is-IS.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/it-IT.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/ja-JP.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/ko-KR.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/lt-LT.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/lv-LV.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/nl-NL.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/no-NO.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/pl-PL.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/pt-BR.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/pt-PT.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/ro-RO.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/ru-RU.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/sk-SK.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/sl-SI.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/sr-SP.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/sv-SE.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/tr-TR.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/uk-UA.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/vi-VN.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/zh-CN.json (100%)
rename frontend/{ => app}/lang/dateTimeFormats/zh-TW.json (100%)
rename frontend/{ => app}/lang/locales/af-ZA.ts (100%)
rename frontend/{ => app}/lang/locales/ar-SA.ts (100%)
rename frontend/{ => app}/lang/locales/bg-BG.ts (100%)
rename frontend/{ => app}/lang/locales/ca-ES.ts (100%)
rename frontend/{ => app}/lang/locales/cs-CZ.ts (100%)
rename frontend/{ => app}/lang/locales/da-DK.ts (100%)
rename frontend/{ => app}/lang/locales/de-DE.ts (100%)
rename frontend/{ => app}/lang/locales/el-GR.ts (100%)
rename frontend/{ => app}/lang/locales/en-GB.ts (100%)
rename frontend/{ => app}/lang/locales/en-US.ts (100%)
rename frontend/{ => app}/lang/locales/es-ES.ts (100%)
rename frontend/{ => app}/lang/locales/et-EE.ts (100%)
rename frontend/{ => app}/lang/locales/fi-FI.ts (100%)
rename frontend/{ => app}/lang/locales/fr-BE.ts (100%)
rename frontend/{ => app}/lang/locales/fr-CA.ts (100%)
rename frontend/{ => app}/lang/locales/fr-FR.ts (100%)
rename frontend/{ => app}/lang/locales/gl-ES.ts (100%)
rename frontend/{ => app}/lang/locales/he-IL.ts (100%)
rename frontend/{ => app}/lang/locales/hr-HR.ts (100%)
rename frontend/{ => app}/lang/locales/hu-HU.ts (100%)
rename frontend/{ => app}/lang/locales/is-IS.ts (100%)
rename frontend/{ => app}/lang/locales/it-IT.ts (100%)
rename frontend/{ => app}/lang/locales/ja-JP.ts (100%)
rename frontend/{ => app}/lang/locales/ko-KR.ts (100%)
rename frontend/{ => app}/lang/locales/lt-LT.ts (100%)
rename frontend/{ => app}/lang/locales/lv-LV.ts (100%)
rename frontend/{ => app}/lang/locales/nl-NL.ts (100%)
rename frontend/{ => app}/lang/locales/no-NO.ts (100%)
rename frontend/{ => app}/lang/locales/pl-PL.ts (100%)
rename frontend/{ => app}/lang/locales/pt-BR.ts (100%)
rename frontend/{ => app}/lang/locales/pt-PT.ts (100%)
rename frontend/{ => app}/lang/locales/ro-RO.ts (100%)
rename frontend/{ => app}/lang/locales/ru-RU.ts (100%)
rename frontend/{ => app}/lang/locales/sk-SK.ts (100%)
rename frontend/{ => app}/lang/locales/sl-SI.ts (100%)
rename frontend/{ => app}/lang/locales/sr-SP.ts (100%)
rename frontend/{ => app}/lang/locales/sv-SE.ts (100%)
rename frontend/{ => app}/lang/locales/tr-TR.ts (100%)
rename frontend/{ => app}/lang/locales/uk-UA.ts (100%)
rename frontend/{ => app}/lang/locales/vi-VN.ts (100%)
rename frontend/{ => app}/lang/locales/zh-CN.ts (100%)
rename frontend/{ => app}/lang/locales/zh-TW.ts (100%)
rename frontend/{ => app}/lang/messages/af-ZA.json (100%)
rename frontend/{ => app}/lang/messages/ar-SA.json (100%)
rename frontend/{ => app}/lang/messages/bg-BG.json (100%)
rename frontend/{ => app}/lang/messages/ca-ES.json (100%)
rename frontend/{ => app}/lang/messages/cs-CZ.json (100%)
rename frontend/{ => app}/lang/messages/da-DK.json (100%)
rename frontend/{ => app}/lang/messages/de-DE.json (100%)
rename frontend/{ => app}/lang/messages/el-GR.json (100%)
rename frontend/{ => app}/lang/messages/en-GB.json (100%)
rename frontend/{ => app}/lang/messages/en-US.json (100%)
rename frontend/{ => app}/lang/messages/es-ES.json (100%)
rename frontend/{ => app}/lang/messages/et-EE.json (100%)
rename frontend/{ => app}/lang/messages/fi-FI.json (100%)
rename frontend/{ => app}/lang/messages/fr-BE.json (100%)
rename frontend/{ => app}/lang/messages/fr-CA.json (100%)
rename frontend/{ => app}/lang/messages/fr-FR.json (100%)
rename frontend/{ => app}/lang/messages/gl-ES.json (100%)
rename frontend/{ => app}/lang/messages/he-IL.json (100%)
rename frontend/{ => app}/lang/messages/hr-HR.json (100%)
rename frontend/{ => app}/lang/messages/hu-HU.json (100%)
rename frontend/{ => app}/lang/messages/is-IS.json (100%)
rename frontend/{ => app}/lang/messages/it-IT.json (100%)
rename frontend/{ => app}/lang/messages/ja-JP.json (100%)
rename frontend/{ => app}/lang/messages/ko-KR.json (100%)
rename frontend/{ => app}/lang/messages/lt-LT.json (100%)
rename frontend/{ => app}/lang/messages/lv-LV.json (100%)
rename frontend/{ => app}/lang/messages/nl-NL.json (100%)
rename frontend/{ => app}/lang/messages/no-NO.json (100%)
rename frontend/{ => app}/lang/messages/pl-PL.json (100%)
rename frontend/{ => app}/lang/messages/pt-BR.json (100%)
rename frontend/{ => app}/lang/messages/pt-PT.json (100%)
rename frontend/{ => app}/lang/messages/ro-RO.json (100%)
rename frontend/{ => app}/lang/messages/ru-RU.json (100%)
rename frontend/{ => app}/lang/messages/sk-SK.json (100%)
rename frontend/{ => app}/lang/messages/sl-SI.json (100%)
rename frontend/{ => app}/lang/messages/sr-SP.json (100%)
rename frontend/{ => app}/lang/messages/sv-SE.json (100%)
rename frontend/{ => app}/lang/messages/tr-TR.json (100%)
rename frontend/{ => app}/lang/messages/uk-UA.json (100%)
rename frontend/{ => app}/lang/messages/vi-VN.json (100%)
rename frontend/{ => app}/lang/messages/zh-CN.json (100%)
rename frontend/{ => app}/lang/messages/zh-TW.json (100%)
rename frontend/{ => app}/layouts/admin.vue (100%)
rename frontend/{ => app}/layouts/basic.vue (100%)
rename frontend/{ => app}/layouts/blank.vue (84%)
rename frontend/{ => app}/layouts/default.vue (100%)
rename frontend/{ => app}/layouts/error.vue (100%)
rename frontend/{ => app}/lib/api/admin/admin-about.ts (100%)
rename frontend/{ => app}/lib/api/admin/admin-analytics.ts (100%)
rename frontend/{ => app}/lib/api/admin/admin-backups.ts (100%)
rename frontend/{ => app}/lib/api/admin/admin-debug.ts (100%)
rename frontend/{ => app}/lib/api/admin/admin-groups.ts (100%)
rename frontend/{ => app}/lib/api/admin/admin-households.ts (100%)
rename frontend/{ => app}/lib/api/admin/admin-maintenance.ts (100%)
rename frontend/{ => app}/lib/api/admin/admin-users.ts (100%)
rename frontend/{ => app}/lib/api/base/base-clients.ts (100%)
rename frontend/{ => app}/lib/api/base/index.ts (100%)
rename frontend/{ => app}/lib/api/base/route.ts (100%)
rename frontend/{ => app}/lib/api/base/routes.test.ts (100%)
rename frontend/{ => app}/lib/api/client-admin.ts (100%)
rename frontend/{ => app}/lib/api/client-public.ts (100%)
rename frontend/{ => app}/lib/api/client-user.ts (100%)
rename frontend/{ => app}/lib/api/config.ts (100%)
rename frontend/{ => app}/lib/api/index.ts (100%)
rename frontend/{ => app}/lib/api/public/explore.ts (100%)
rename frontend/{ => app}/lib/api/public/explore/cookbooks.ts (100%)
rename frontend/{ => app}/lib/api/public/explore/foods.ts (100%)
rename frontend/{ => app}/lib/api/public/explore/households.ts (100%)
rename frontend/{ => app}/lib/api/public/explore/organizers.ts (100%)
rename frontend/{ => app}/lib/api/public/explore/recipes.ts (100%)
rename frontend/{ => app}/lib/api/public/shared.ts (100%)
rename frontend/{ => app}/lib/api/public/validators.ts (100%)
rename frontend/{ => app}/lib/api/types/activity.ts (100%)
rename frontend/{ => app}/lib/api/types/admin.ts (100%)
rename frontend/{ => app}/lib/api/types/analytics.ts (100%)
rename frontend/{ => app}/lib/api/types/cookbook.ts (100%)
rename frontend/{ => app}/lib/api/types/events.ts (100%)
rename frontend/{ => app}/lib/api/types/group.ts (100%)
rename frontend/{ => app}/lib/api/types/household.ts (100%)
rename frontend/{ => app}/lib/api/types/labels.ts (100%)
rename frontend/{ => app}/lib/api/types/meal-plan.ts (100%)
rename frontend/{ => app}/lib/api/types/non-generated.ts (100%)
rename frontend/{ => app}/lib/api/types/openai.ts (100%)
rename frontend/{ => app}/lib/api/types/recipe.ts (100%)
rename frontend/{ => app}/lib/api/types/reports.ts (100%)
rename frontend/{ => app}/lib/api/types/response.ts (100%)
rename frontend/{ => app}/lib/api/types/static.ts (100%)
rename frontend/{ => app}/lib/api/types/user.ts (100%)
rename frontend/{ => app}/lib/api/user/backups.ts (100%)
rename frontend/{ => app}/lib/api/user/email.ts (100%)
rename frontend/{ => app}/lib/api/user/group-cookbooks.ts (100%)
rename frontend/{ => app}/lib/api/user/group-event-notifier.ts (100%)
rename frontend/{ => app}/lib/api/user/group-mealplan-rules.ts (100%)
rename frontend/{ => app}/lib/api/user/group-mealplan.ts (100%)
rename frontend/{ => app}/lib/api/user/group-migrations.ts (100%)
rename frontend/{ => app}/lib/api/user/group-multiple-purpose-labels.ts (100%)
rename frontend/{ => app}/lib/api/user/group-recipe-actions.ts (100%)
rename frontend/{ => app}/lib/api/user/group-reports.ts (100%)
rename frontend/{ => app}/lib/api/user/group-seeder.ts (100%)
rename frontend/{ => app}/lib/api/user/group-shopping-lists.ts (100%)
rename frontend/{ => app}/lib/api/user/group-webhooks.ts (100%)
rename frontend/{ => app}/lib/api/user/groups.ts (100%)
rename frontend/{ => app}/lib/api/user/households.ts (100%)
rename frontend/{ => app}/lib/api/user/organizer-categories.ts (100%)
rename frontend/{ => app}/lib/api/user/organizer-tags.ts (100%)
rename frontend/{ => app}/lib/api/user/organizer-tools.ts (100%)
rename frontend/{ => app}/lib/api/user/recipe-bulk-actions.ts (100%)
rename frontend/{ => app}/lib/api/user/recipe-foods.ts (100%)
rename frontend/{ => app}/lib/api/user/recipe-units.ts (100%)
rename frontend/{ => app}/lib/api/user/recipes/index.ts (100%)
rename frontend/{ => app}/lib/api/user/recipes/recipe-comments.ts (100%)
rename frontend/{ => app}/lib/api/user/recipes/recipe-share.ts (100%)
rename frontend/{ => app}/lib/api/user/recipes/recipe.ts (100%)
rename frontend/{ => app}/lib/api/user/upload.ts (100%)
rename frontend/{ => app}/lib/api/user/user-registration.ts (100%)
rename frontend/{ => app}/lib/api/user/users.ts (100%)
rename frontend/{ => app}/lib/api/user/utils.ts (100%)
rename frontend/{ => app}/lib/icons/icon-type.ts (100%)
rename frontend/{ => app}/lib/icons/icons.ts (100%)
rename frontend/{ => app}/lib/icons/index.ts (100%)
rename frontend/{ => app}/lib/validators/index.ts (100%)
rename frontend/{ => app}/lib/validators/inputs.test.ts (100%)
rename frontend/{ => app}/lib/validators/inputs.ts (100%)
rename frontend/{ => app}/lib/validators/password.test.ts (100%)
rename frontend/{ => app}/lib/validators/password.ts (100%)
rename frontend/{ => app}/middleware/admin-only.ts (100%)
rename frontend/{ => app}/middleware/advanced-only.ts (100%)
rename frontend/{ => app}/middleware/can-manage-household-only.ts (100%)
rename frontend/{ => app}/middleware/can-manage-only.ts (100%)
rename frontend/{ => app}/middleware/can-organize-only.ts (100%)
rename frontend/{ => app}/middleware/group-only.ts (100%)
rename frontend/{ => app}/middleware/pwa-share-target-redirect.global.ts (100%)
rename frontend/{ => app}/pages/admin.vue (100%)
rename frontend/{ => app}/pages/admin/backups.vue (100%)
rename frontend/{ => app}/pages/admin/debug/openai.vue (100%)
rename frontend/{ => app}/pages/admin/debug/parser.vue (100%)
rename frontend/{ => app}/pages/admin/maintenance/index.vue (100%)
rename frontend/{ => app}/pages/admin/manage/groups/[id].vue (100%)
rename frontend/{ => app}/pages/admin/manage/groups/index.vue (100%)
rename frontend/{ => app}/pages/admin/manage/households/[id].vue (100%)
rename frontend/{ => app}/pages/admin/manage/households/index.vue (100%)
rename frontend/{ => app}/pages/admin/manage/users/[id].vue (100%)
rename frontend/{ => app}/pages/admin/manage/users/create.vue (100%)
rename frontend/{ => app}/pages/admin/manage/users/index.vue (100%)
rename frontend/{ => app}/pages/admin/setup.vue (100%)
rename frontend/{ => app}/pages/admin/site-settings.vue (100%)
rename frontend/{ => app}/pages/forgot-password.vue (100%)
rename frontend/{ => app}/pages/g/[groupSlug]/cookbooks/[slug].vue (100%)
rename frontend/{ => app}/pages/g/[groupSlug]/cookbooks/index.vue (100%)
rename frontend/{ => app}/pages/g/[groupSlug]/index.vue (100%)
rename frontend/{ => app}/pages/g/[groupSlug]/r/[slug]/index.vue (100%)
rename frontend/{ => app}/pages/g/[groupSlug]/r/create.vue (100%)
rename frontend/{ => app}/pages/g/[groupSlug]/r/create/bulk.vue (100%)
rename frontend/{ => app}/pages/g/[groupSlug]/r/create/debug.vue (100%)
rename frontend/{ => app}/pages/g/[groupSlug]/r/create/html.vue (100%)
rename frontend/{ => app}/pages/g/[groupSlug]/r/create/image.vue (100%)
rename frontend/{ => app}/pages/g/[groupSlug]/r/create/index.vue (100%)
rename frontend/{ => app}/pages/g/[groupSlug]/r/create/new.vue (100%)
rename frontend/{ => app}/pages/g/[groupSlug]/r/create/url.vue (100%)
rename frontend/{ => app}/pages/g/[groupSlug]/r/create/zip.vue (100%)
rename frontend/{ => app}/pages/g/[groupSlug]/recipes/categories/index.vue (100%)
rename frontend/{ => app}/pages/g/[groupSlug]/recipes/finder/index.vue (100%)
rename frontend/{ => app}/pages/g/[groupSlug]/recipes/tags/index.vue (100%)
rename frontend/{ => app}/pages/g/[groupSlug]/recipes/timeline.vue (100%)
rename frontend/{ => app}/pages/g/[groupSlug]/recipes/tools/index.vue (100%)
rename frontend/{ => app}/pages/g/[groupSlug]/shared/r/[id].vue (100%)
rename frontend/{ => app}/pages/group/data.vue (100%)
rename frontend/{ => app}/pages/group/data/categories.vue (100%)
rename frontend/{ => app}/pages/group/data/foods.vue (100%)
rename frontend/{ => app}/pages/group/data/index.vue (100%)
rename frontend/{ => app}/pages/group/data/labels.vue (100%)
rename frontend/{ => app}/pages/group/data/recipe-actions.vue (100%)
rename frontend/{ => app}/pages/group/data/recipes.vue (100%)
rename frontend/{ => app}/pages/group/data/tags.vue (100%)
rename frontend/{ => app}/pages/group/data/tools.vue (100%)
rename frontend/{ => app}/pages/group/data/units.vue (100%)
rename frontend/{ => app}/pages/group/index.vue (100%)
rename frontend/{ => app}/pages/group/migrations.vue (100%)
rename frontend/{ => app}/pages/group/reports/[id].vue (100%)
rename frontend/{ => app}/pages/household/index.vue (100%)
rename frontend/{ => app}/pages/household/mealplan/planner.vue (100%)
rename frontend/{ => app}/pages/household/mealplan/planner/edit.vue (99%)
rename frontend/{ => app}/pages/household/mealplan/planner/view.vue (98%)
rename frontend/{ => app}/pages/household/mealplan/settings.vue (100%)
rename frontend/{ => app}/pages/household/members.vue (100%)
rename frontend/{ => app}/pages/household/notifiers.vue (100%)
rename frontend/{ => app}/pages/household/webhooks.vue (100%)
rename frontend/{ => app}/pages/index.vue (100%)
rename frontend/{ => app}/pages/login.vue (100%)
rename frontend/{ => app}/pages/register/index.vue (100%)
rename frontend/{ => app}/pages/register/states.ts (100%)
rename frontend/{ => app}/pages/reset-password.vue (100%)
rename frontend/{ => app}/pages/shopping-lists/[id].vue (100%)
rename frontend/{ => app}/pages/shopping-lists/index.vue (100%)
rename frontend/{ => app}/pages/user/[id]/favorites.vue (100%)
rename frontend/{ => app}/pages/user/profile/api-tokens.vue (100%)
rename frontend/{ => app}/pages/user/profile/edit.vue (100%)
rename frontend/{ => app}/pages/user/profile/index.vue (100%)
rename frontend/{ => app}/plugins/app-info.client.ts (100%)
rename frontend/{ => app}/plugins/axios.ts (100%)
rename frontend/{ => app}/plugins/dark-mode.client.ts (100%)
rename frontend/{ => app}/plugins/globals.ts (100%)
rename frontend/{ => app}/plugins/init-auth.client.ts (100%)
rename frontend/{ => app}/plugins/theme.ts (100%)
rename frontend/{ => app}/tests/utils.ts (100%)
rename frontend/{ => app}/types/application-types.ts (100%)
rename frontend/{ => app}/types/auth.d.ts (100%)
rename frontend/{ => app}/types/auto-forms.ts (100%)
rename frontend/{ => app}/types/components.d.ts (100%)
rename frontend/{ => app}/types/recipe/organizers.ts (100%)
rename frontend/{ => app}/types/ts-shim.d.ts (100%)
delete mode 100644 frontend/pages/household/mealplan/planner/types.ts
rename frontend/{static => public}/account.png (100%)
rename frontend/{static => public}/discord.svg (100%)
rename frontend/{static => public}/fallback-profile.webp (100%)
rename frontend/{static => public}/favicon.ico (100%)
rename frontend/{static => public}/gotify.png (100%)
rename frontend/{static => public}/home-assistant.png (100%)
rename frontend/{static => public}/icon.png (100%)
rename frontend/{static => public}/icons/android-chrome-192x192.png (100%)
rename frontend/{static => public}/icons/android-chrome-512x512.png (100%)
rename frontend/{static => public}/icons/android-chrome-maskable-192x192.png (100%)
rename frontend/{static => public}/icons/android-chrome-maskable-512x512.png (100%)
rename frontend/{static => public}/icons/apple-touch-icon.png (100%)
rename frontend/{static => public}/icons/favicon-16x16.png (100%)
rename frontend/{static => public}/icons/favicon-32x32.png (100%)
rename frontend/{static => public}/icons/icon-x64.png (100%)
rename frontend/{static => public}/icons/mdiCalendarMultiselect-192x192.png (100%)
rename frontend/{static => public}/icons/mdiCalendarMultiselect-96x96.png (100%)
rename frontend/{static => public}/icons/mdiFormatListChecks-192x192.png (100%)
rename frontend/{static => public}/icons/mdiFormatListChecks-96x96.png (100%)
rename frontend/{static => public}/icons/mstile-150x150.png (100%)
rename frontend/{static => public}/icons/safari-pinned-tab.svg (100%)
rename frontend/{static => public}/matrix.png (100%)
rename frontend/{static => public}/mealie-email-banner.png (100%)
rename frontend/{static => public}/pushover.svg (100%)
rename frontend/{static => public}/robots.txt (100%)
rename frontend/{static => public}/screenshots/editor-narrow.png (100%)
rename frontend/{static => public}/screenshots/editor-wide.png (100%)
rename frontend/{static => public}/screenshots/home-narrow.png (100%)
rename frontend/{static => public}/screenshots/home-wide.png (100%)
rename frontend/{static => public}/screenshots/parser-narrow.png (100%)
rename frontend/{static => public}/screenshots/parser-wide.png (100%)
rename frontend/{static => public}/screenshots/recipe-narrow.png (100%)
rename frontend/{static => public}/screenshots/recipe-wide.png (100%)
rename frontend/{static => public}/svgs/admin-site-settings.svg (100%)
rename frontend/{static => public}/svgs/data-reports.svg (100%)
rename frontend/{static => public}/svgs/manage-api-tokens.svg (100%)
rename frontend/{static => public}/svgs/manage-cookbooks.svg (100%)
rename frontend/{static => public}/svgs/manage-data-migrations.svg (100%)
rename frontend/{static => public}/svgs/manage-group-settings.svg (100%)
rename frontend/{static => public}/svgs/manage-members.svg (100%)
rename frontend/{static => public}/svgs/manage-notifiers.svg (100%)
rename frontend/{static => public}/svgs/manage-profile.svg (100%)
rename frontend/{static => public}/svgs/manage-recipes.svg (100%)
rename frontend/{static => public}/svgs/manage-tasks.svg (100%)
rename frontend/{static => public}/svgs/manage-webhooks.svg (100%)
rename frontend/{static => public}/svgs/recipes-create.svg (100%)
rename frontend/{static => public}/svgs/shopping-cart.svg (100%)
delete mode 100644 frontend/store/README.md
delete mode 100644 frontend/store/index.js
diff --git a/frontend/assets/main.css b/frontend/app/assets/main.css
similarity index 100%
rename from frontend/assets/main.css
rename to frontend/app/assets/main.css
diff --git a/frontend/assets/style-overrides.scss b/frontend/app/assets/style-overrides.scss
similarity index 100%
rename from frontend/assets/style-overrides.scss
rename to frontend/app/assets/style-overrides.scss
diff --git a/frontend/assets/variables.scss b/frontend/app/assets/variables.scss
similarity index 100%
rename from frontend/assets/variables.scss
rename to frontend/app/assets/variables.scss
diff --git a/frontend/components/Domain/Admin/Setup/EndPageContent.vue b/frontend/app/components/Domain/Admin/Setup/EndPageContent.vue
similarity index 100%
rename from frontend/components/Domain/Admin/Setup/EndPageContent.vue
rename to frontend/app/components/Domain/Admin/Setup/EndPageContent.vue
diff --git a/frontend/components/Domain/Cookbook/CookbookEditor.vue b/frontend/app/components/Domain/Cookbook/CookbookEditor.vue
similarity index 100%
rename from frontend/components/Domain/Cookbook/CookbookEditor.vue
rename to frontend/app/components/Domain/Cookbook/CookbookEditor.vue
diff --git a/frontend/components/Domain/Cookbook/CookbookPage.vue b/frontend/app/components/Domain/Cookbook/CookbookPage.vue
similarity index 100%
rename from frontend/components/Domain/Cookbook/CookbookPage.vue
rename to frontend/app/components/Domain/Cookbook/CookbookPage.vue
diff --git a/frontend/components/Domain/Group/GroupDataPage.vue b/frontend/app/components/Domain/Group/GroupDataPage.vue
similarity index 100%
rename from frontend/components/Domain/Group/GroupDataPage.vue
rename to frontend/app/components/Domain/Group/GroupDataPage.vue
diff --git a/frontend/components/Domain/Group/GroupExportData.vue b/frontend/app/components/Domain/Group/GroupExportData.vue
similarity index 100%
rename from frontend/components/Domain/Group/GroupExportData.vue
rename to frontend/app/components/Domain/Group/GroupExportData.vue
diff --git a/frontend/components/Domain/Group/GroupPreferencesEditor.vue b/frontend/app/components/Domain/Group/GroupPreferencesEditor.vue
similarity index 100%
rename from frontend/components/Domain/Group/GroupPreferencesEditor.vue
rename to frontend/app/components/Domain/Group/GroupPreferencesEditor.vue
diff --git a/frontend/components/Domain/Household/GroupMealPlanDayContextMenu.vue b/frontend/app/components/Domain/Household/GroupMealPlanDayContextMenu.vue
similarity index 100%
rename from frontend/components/Domain/Household/GroupMealPlanDayContextMenu.vue
rename to frontend/app/components/Domain/Household/GroupMealPlanDayContextMenu.vue
diff --git a/frontend/components/Domain/Household/GroupMealPlanRuleForm.vue b/frontend/app/components/Domain/Household/GroupMealPlanRuleForm.vue
similarity index 100%
rename from frontend/components/Domain/Household/GroupMealPlanRuleForm.vue
rename to frontend/app/components/Domain/Household/GroupMealPlanRuleForm.vue
diff --git a/frontend/components/Domain/Household/GroupWebhookEditor.vue b/frontend/app/components/Domain/Household/GroupWebhookEditor.vue
similarity index 100%
rename from frontend/components/Domain/Household/GroupWebhookEditor.vue
rename to frontend/app/components/Domain/Household/GroupWebhookEditor.vue
diff --git a/frontend/components/Domain/Household/HouseholdPreferencesEditor.vue b/frontend/app/components/Domain/Household/HouseholdPreferencesEditor.vue
similarity index 100%
rename from frontend/components/Domain/Household/HouseholdPreferencesEditor.vue
rename to frontend/app/components/Domain/Household/HouseholdPreferencesEditor.vue
diff --git a/frontend/components/Domain/QueryFilterBuilder.vue b/frontend/app/components/Domain/QueryFilterBuilder.vue
similarity index 100%
rename from frontend/components/Domain/QueryFilterBuilder.vue
rename to frontend/app/components/Domain/QueryFilterBuilder.vue
diff --git a/frontend/components/Domain/Recipe/RecipeActionMenu.vue b/frontend/app/components/Domain/Recipe/RecipeActionMenu.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeActionMenu.vue
rename to frontend/app/components/Domain/Recipe/RecipeActionMenu.vue
diff --git a/frontend/components/Domain/Recipe/RecipeAssets.vue b/frontend/app/components/Domain/Recipe/RecipeAssets.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeAssets.vue
rename to frontend/app/components/Domain/Recipe/RecipeAssets.vue
diff --git a/frontend/components/Domain/Recipe/RecipeCard.vue b/frontend/app/components/Domain/Recipe/RecipeCard.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeCard.vue
rename to frontend/app/components/Domain/Recipe/RecipeCard.vue
diff --git a/frontend/components/Domain/Recipe/RecipeCardImage.vue b/frontend/app/components/Domain/Recipe/RecipeCardImage.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeCardImage.vue
rename to frontend/app/components/Domain/Recipe/RecipeCardImage.vue
diff --git a/frontend/components/Domain/Recipe/RecipeCardMobile.vue b/frontend/app/components/Domain/Recipe/RecipeCardMobile.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeCardMobile.vue
rename to frontend/app/components/Domain/Recipe/RecipeCardMobile.vue
diff --git a/frontend/components/Domain/Recipe/RecipeCardRating.vue b/frontend/app/components/Domain/Recipe/RecipeCardRating.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeCardRating.vue
rename to frontend/app/components/Domain/Recipe/RecipeCardRating.vue
diff --git a/frontend/components/Domain/Recipe/RecipeCardSection.vue b/frontend/app/components/Domain/Recipe/RecipeCardSection.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeCardSection.vue
rename to frontend/app/components/Domain/Recipe/RecipeCardSection.vue
diff --git a/frontend/components/Domain/Recipe/RecipeChips.vue b/frontend/app/components/Domain/Recipe/RecipeChips.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeChips.vue
rename to frontend/app/components/Domain/Recipe/RecipeChips.vue
diff --git a/frontend/components/Domain/Recipe/RecipeContextMenu/RecipeContextMenu.vue b/frontend/app/components/Domain/Recipe/RecipeContextMenu/RecipeContextMenu.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeContextMenu/RecipeContextMenu.vue
rename to frontend/app/components/Domain/Recipe/RecipeContextMenu/RecipeContextMenu.vue
diff --git a/frontend/components/Domain/Recipe/RecipeContextMenu/RecipeContextMenuContent.vue b/frontend/app/components/Domain/Recipe/RecipeContextMenu/RecipeContextMenuContent.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeContextMenu/RecipeContextMenuContent.vue
rename to frontend/app/components/Domain/Recipe/RecipeContextMenu/RecipeContextMenuContent.vue
diff --git a/frontend/components/Domain/Recipe/RecipeDataAliasManagerDialog.vue b/frontend/app/components/Domain/Recipe/RecipeDataAliasManagerDialog.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeDataAliasManagerDialog.vue
rename to frontend/app/components/Domain/Recipe/RecipeDataAliasManagerDialog.vue
diff --git a/frontend/components/Domain/Recipe/RecipeDataTable.vue b/frontend/app/components/Domain/Recipe/RecipeDataTable.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeDataTable.vue
rename to frontend/app/components/Domain/Recipe/RecipeDataTable.vue
diff --git a/frontend/components/Domain/Recipe/RecipeDialogAddToShoppingList.vue b/frontend/app/components/Domain/Recipe/RecipeDialogAddToShoppingList.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeDialogAddToShoppingList.vue
rename to frontend/app/components/Domain/Recipe/RecipeDialogAddToShoppingList.vue
diff --git a/frontend/components/Domain/Recipe/RecipeDialogBulkAdd.vue b/frontend/app/components/Domain/Recipe/RecipeDialogBulkAdd.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeDialogBulkAdd.vue
rename to frontend/app/components/Domain/Recipe/RecipeDialogBulkAdd.vue
diff --git a/frontend/components/Domain/Recipe/RecipeDialogPrintPreferences.vue b/frontend/app/components/Domain/Recipe/RecipeDialogPrintPreferences.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeDialogPrintPreferences.vue
rename to frontend/app/components/Domain/Recipe/RecipeDialogPrintPreferences.vue
diff --git a/frontend/components/Domain/Recipe/RecipeDialogSearch.vue b/frontend/app/components/Domain/Recipe/RecipeDialogSearch.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeDialogSearch.vue
rename to frontend/app/components/Domain/Recipe/RecipeDialogSearch.vue
diff --git a/frontend/components/Domain/Recipe/RecipeDialogShare.vue b/frontend/app/components/Domain/Recipe/RecipeDialogShare.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeDialogShare.vue
rename to frontend/app/components/Domain/Recipe/RecipeDialogShare.vue
diff --git a/frontend/components/Domain/Recipe/RecipeExplorerPage/RecipeExplorerPage.vue b/frontend/app/components/Domain/Recipe/RecipeExplorerPage/RecipeExplorerPage.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeExplorerPage/RecipeExplorerPage.vue
rename to frontend/app/components/Domain/Recipe/RecipeExplorerPage/RecipeExplorerPage.vue
diff --git a/frontend/components/Domain/Recipe/RecipeExplorerPage/RecipeExplorerPageParts/RecipeExplorerPageSearch.vue b/frontend/app/components/Domain/Recipe/RecipeExplorerPage/RecipeExplorerPageParts/RecipeExplorerPageSearch.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeExplorerPage/RecipeExplorerPageParts/RecipeExplorerPageSearch.vue
rename to frontend/app/components/Domain/Recipe/RecipeExplorerPage/RecipeExplorerPageParts/RecipeExplorerPageSearch.vue
diff --git a/frontend/components/Domain/Recipe/RecipeExplorerPage/RecipeExplorerPageParts/RecipeExplorerPageSearchFilters.vue b/frontend/app/components/Domain/Recipe/RecipeExplorerPage/RecipeExplorerPageParts/RecipeExplorerPageSearchFilters.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeExplorerPage/RecipeExplorerPageParts/RecipeExplorerPageSearchFilters.vue
rename to frontend/app/components/Domain/Recipe/RecipeExplorerPage/RecipeExplorerPageParts/RecipeExplorerPageSearchFilters.vue
diff --git a/frontend/components/Domain/Recipe/RecipeFavoriteBadge.vue b/frontend/app/components/Domain/Recipe/RecipeFavoriteBadge.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeFavoriteBadge.vue
rename to frontend/app/components/Domain/Recipe/RecipeFavoriteBadge.vue
diff --git a/frontend/components/Domain/Recipe/RecipeImageUploadBtn.vue b/frontend/app/components/Domain/Recipe/RecipeImageUploadBtn.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeImageUploadBtn.vue
rename to frontend/app/components/Domain/Recipe/RecipeImageUploadBtn.vue
diff --git a/frontend/components/Domain/Recipe/RecipeIngredientEditor.vue b/frontend/app/components/Domain/Recipe/RecipeIngredientEditor.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeIngredientEditor.vue
rename to frontend/app/components/Domain/Recipe/RecipeIngredientEditor.vue
diff --git a/frontend/components/Domain/Recipe/RecipeIngredientHtml.vue b/frontend/app/components/Domain/Recipe/RecipeIngredientHtml.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeIngredientHtml.vue
rename to frontend/app/components/Domain/Recipe/RecipeIngredientHtml.vue
diff --git a/frontend/components/Domain/Recipe/RecipeIngredientListItem.vue b/frontend/app/components/Domain/Recipe/RecipeIngredientListItem.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeIngredientListItem.vue
rename to frontend/app/components/Domain/Recipe/RecipeIngredientListItem.vue
diff --git a/frontend/components/Domain/Recipe/RecipeIngredients.vue b/frontend/app/components/Domain/Recipe/RecipeIngredients.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeIngredients.vue
rename to frontend/app/components/Domain/Recipe/RecipeIngredients.vue
diff --git a/frontend/components/Domain/Recipe/RecipeLastMade.vue b/frontend/app/components/Domain/Recipe/RecipeLastMade.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeLastMade.vue
rename to frontend/app/components/Domain/Recipe/RecipeLastMade.vue
diff --git a/frontend/components/Domain/Recipe/RecipeList.vue b/frontend/app/components/Domain/Recipe/RecipeList.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeList.vue
rename to frontend/app/components/Domain/Recipe/RecipeList.vue
diff --git a/frontend/components/Domain/Recipe/RecipeNotes.vue b/frontend/app/components/Domain/Recipe/RecipeNotes.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeNotes.vue
rename to frontend/app/components/Domain/Recipe/RecipeNotes.vue
diff --git a/frontend/components/Domain/Recipe/RecipeNutrition.vue b/frontend/app/components/Domain/Recipe/RecipeNutrition.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeNutrition.vue
rename to frontend/app/components/Domain/Recipe/RecipeNutrition.vue
diff --git a/frontend/components/Domain/Recipe/RecipeOrganizerDialog.vue b/frontend/app/components/Domain/Recipe/RecipeOrganizerDialog.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeOrganizerDialog.vue
rename to frontend/app/components/Domain/Recipe/RecipeOrganizerDialog.vue
diff --git a/frontend/components/Domain/Recipe/RecipeOrganizerPage.vue b/frontend/app/components/Domain/Recipe/RecipeOrganizerPage.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeOrganizerPage.vue
rename to frontend/app/components/Domain/Recipe/RecipeOrganizerPage.vue
diff --git a/frontend/components/Domain/Recipe/RecipeOrganizerSelector.vue b/frontend/app/components/Domain/Recipe/RecipeOrganizerSelector.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipeOrganizerSelector.vue
rename to frontend/app/components/Domain/Recipe/RecipeOrganizerSelector.vue
diff --git a/frontend/components/Domain/Recipe/RecipePage/RecipePage.vue b/frontend/app/components/Domain/Recipe/RecipePage/RecipePage.vue
similarity index 100%
rename from frontend/components/Domain/Recipe/RecipePage/RecipePage.vue
rename to frontend/app/components/Domain/Recipe/RecipePage/RecipePage.vue
diff --git a/frontend/components/Domain/Recipe/RecipePage/RecipePageParts/RecipePageComments.vue b/frontend/app/components/Domain/Recipe/RecipePage/RecipePageParts/RecipePageComments.vue
similarity index 99%
rename from frontend/components/Domain/Recipe/RecipePage/RecipePageParts/RecipePageComments.vue
rename to frontend/app/components/Domain/Recipe/RecipePage/RecipePageParts/RecipePageComments.vue
index 327e9e478..e2a9afabf 100644
--- a/frontend/components/Domain/Recipe/RecipePage/RecipePageParts/RecipePageComments.vue
+++ b/frontend/app/components/Domain/Recipe/RecipePage/RecipePageParts/RecipePageComments.vue
@@ -82,7 +82,7 @@
-
diff --git a/frontend/layouts/default.vue b/frontend/app/layouts/default.vue
similarity index 100%
rename from frontend/layouts/default.vue
rename to frontend/app/layouts/default.vue
diff --git a/frontend/layouts/error.vue b/frontend/app/layouts/error.vue
similarity index 100%
rename from frontend/layouts/error.vue
rename to frontend/app/layouts/error.vue
diff --git a/frontend/lib/api/admin/admin-about.ts b/frontend/app/lib/api/admin/admin-about.ts
similarity index 100%
rename from frontend/lib/api/admin/admin-about.ts
rename to frontend/app/lib/api/admin/admin-about.ts
diff --git a/frontend/lib/api/admin/admin-analytics.ts b/frontend/app/lib/api/admin/admin-analytics.ts
similarity index 100%
rename from frontend/lib/api/admin/admin-analytics.ts
rename to frontend/app/lib/api/admin/admin-analytics.ts
diff --git a/frontend/lib/api/admin/admin-backups.ts b/frontend/app/lib/api/admin/admin-backups.ts
similarity index 100%
rename from frontend/lib/api/admin/admin-backups.ts
rename to frontend/app/lib/api/admin/admin-backups.ts
diff --git a/frontend/lib/api/admin/admin-debug.ts b/frontend/app/lib/api/admin/admin-debug.ts
similarity index 100%
rename from frontend/lib/api/admin/admin-debug.ts
rename to frontend/app/lib/api/admin/admin-debug.ts
diff --git a/frontend/lib/api/admin/admin-groups.ts b/frontend/app/lib/api/admin/admin-groups.ts
similarity index 100%
rename from frontend/lib/api/admin/admin-groups.ts
rename to frontend/app/lib/api/admin/admin-groups.ts
diff --git a/frontend/lib/api/admin/admin-households.ts b/frontend/app/lib/api/admin/admin-households.ts
similarity index 100%
rename from frontend/lib/api/admin/admin-households.ts
rename to frontend/app/lib/api/admin/admin-households.ts
diff --git a/frontend/lib/api/admin/admin-maintenance.ts b/frontend/app/lib/api/admin/admin-maintenance.ts
similarity index 100%
rename from frontend/lib/api/admin/admin-maintenance.ts
rename to frontend/app/lib/api/admin/admin-maintenance.ts
diff --git a/frontend/lib/api/admin/admin-users.ts b/frontend/app/lib/api/admin/admin-users.ts
similarity index 100%
rename from frontend/lib/api/admin/admin-users.ts
rename to frontend/app/lib/api/admin/admin-users.ts
diff --git a/frontend/lib/api/base/base-clients.ts b/frontend/app/lib/api/base/base-clients.ts
similarity index 100%
rename from frontend/lib/api/base/base-clients.ts
rename to frontend/app/lib/api/base/base-clients.ts
diff --git a/frontend/lib/api/base/index.ts b/frontend/app/lib/api/base/index.ts
similarity index 100%
rename from frontend/lib/api/base/index.ts
rename to frontend/app/lib/api/base/index.ts
diff --git a/frontend/lib/api/base/route.ts b/frontend/app/lib/api/base/route.ts
similarity index 100%
rename from frontend/lib/api/base/route.ts
rename to frontend/app/lib/api/base/route.ts
diff --git a/frontend/lib/api/base/routes.test.ts b/frontend/app/lib/api/base/routes.test.ts
similarity index 100%
rename from frontend/lib/api/base/routes.test.ts
rename to frontend/app/lib/api/base/routes.test.ts
diff --git a/frontend/lib/api/client-admin.ts b/frontend/app/lib/api/client-admin.ts
similarity index 100%
rename from frontend/lib/api/client-admin.ts
rename to frontend/app/lib/api/client-admin.ts
diff --git a/frontend/lib/api/client-public.ts b/frontend/app/lib/api/client-public.ts
similarity index 100%
rename from frontend/lib/api/client-public.ts
rename to frontend/app/lib/api/client-public.ts
diff --git a/frontend/lib/api/client-user.ts b/frontend/app/lib/api/client-user.ts
similarity index 100%
rename from frontend/lib/api/client-user.ts
rename to frontend/app/lib/api/client-user.ts
diff --git a/frontend/lib/api/config.ts b/frontend/app/lib/api/config.ts
similarity index 100%
rename from frontend/lib/api/config.ts
rename to frontend/app/lib/api/config.ts
diff --git a/frontend/lib/api/index.ts b/frontend/app/lib/api/index.ts
similarity index 100%
rename from frontend/lib/api/index.ts
rename to frontend/app/lib/api/index.ts
diff --git a/frontend/lib/api/public/explore.ts b/frontend/app/lib/api/public/explore.ts
similarity index 100%
rename from frontend/lib/api/public/explore.ts
rename to frontend/app/lib/api/public/explore.ts
diff --git a/frontend/lib/api/public/explore/cookbooks.ts b/frontend/app/lib/api/public/explore/cookbooks.ts
similarity index 100%
rename from frontend/lib/api/public/explore/cookbooks.ts
rename to frontend/app/lib/api/public/explore/cookbooks.ts
diff --git a/frontend/lib/api/public/explore/foods.ts b/frontend/app/lib/api/public/explore/foods.ts
similarity index 100%
rename from frontend/lib/api/public/explore/foods.ts
rename to frontend/app/lib/api/public/explore/foods.ts
diff --git a/frontend/lib/api/public/explore/households.ts b/frontend/app/lib/api/public/explore/households.ts
similarity index 100%
rename from frontend/lib/api/public/explore/households.ts
rename to frontend/app/lib/api/public/explore/households.ts
diff --git a/frontend/lib/api/public/explore/organizers.ts b/frontend/app/lib/api/public/explore/organizers.ts
similarity index 100%
rename from frontend/lib/api/public/explore/organizers.ts
rename to frontend/app/lib/api/public/explore/organizers.ts
diff --git a/frontend/lib/api/public/explore/recipes.ts b/frontend/app/lib/api/public/explore/recipes.ts
similarity index 100%
rename from frontend/lib/api/public/explore/recipes.ts
rename to frontend/app/lib/api/public/explore/recipes.ts
diff --git a/frontend/lib/api/public/shared.ts b/frontend/app/lib/api/public/shared.ts
similarity index 100%
rename from frontend/lib/api/public/shared.ts
rename to frontend/app/lib/api/public/shared.ts
diff --git a/frontend/lib/api/public/validators.ts b/frontend/app/lib/api/public/validators.ts
similarity index 100%
rename from frontend/lib/api/public/validators.ts
rename to frontend/app/lib/api/public/validators.ts
diff --git a/frontend/lib/api/types/activity.ts b/frontend/app/lib/api/types/activity.ts
similarity index 100%
rename from frontend/lib/api/types/activity.ts
rename to frontend/app/lib/api/types/activity.ts
diff --git a/frontend/lib/api/types/admin.ts b/frontend/app/lib/api/types/admin.ts
similarity index 100%
rename from frontend/lib/api/types/admin.ts
rename to frontend/app/lib/api/types/admin.ts
diff --git a/frontend/lib/api/types/analytics.ts b/frontend/app/lib/api/types/analytics.ts
similarity index 100%
rename from frontend/lib/api/types/analytics.ts
rename to frontend/app/lib/api/types/analytics.ts
diff --git a/frontend/lib/api/types/cookbook.ts b/frontend/app/lib/api/types/cookbook.ts
similarity index 100%
rename from frontend/lib/api/types/cookbook.ts
rename to frontend/app/lib/api/types/cookbook.ts
diff --git a/frontend/lib/api/types/events.ts b/frontend/app/lib/api/types/events.ts
similarity index 100%
rename from frontend/lib/api/types/events.ts
rename to frontend/app/lib/api/types/events.ts
diff --git a/frontend/lib/api/types/group.ts b/frontend/app/lib/api/types/group.ts
similarity index 100%
rename from frontend/lib/api/types/group.ts
rename to frontend/app/lib/api/types/group.ts
diff --git a/frontend/lib/api/types/household.ts b/frontend/app/lib/api/types/household.ts
similarity index 100%
rename from frontend/lib/api/types/household.ts
rename to frontend/app/lib/api/types/household.ts
diff --git a/frontend/lib/api/types/labels.ts b/frontend/app/lib/api/types/labels.ts
similarity index 100%
rename from frontend/lib/api/types/labels.ts
rename to frontend/app/lib/api/types/labels.ts
diff --git a/frontend/lib/api/types/meal-plan.ts b/frontend/app/lib/api/types/meal-plan.ts
similarity index 100%
rename from frontend/lib/api/types/meal-plan.ts
rename to frontend/app/lib/api/types/meal-plan.ts
diff --git a/frontend/lib/api/types/non-generated.ts b/frontend/app/lib/api/types/non-generated.ts
similarity index 100%
rename from frontend/lib/api/types/non-generated.ts
rename to frontend/app/lib/api/types/non-generated.ts
diff --git a/frontend/lib/api/types/openai.ts b/frontend/app/lib/api/types/openai.ts
similarity index 100%
rename from frontend/lib/api/types/openai.ts
rename to frontend/app/lib/api/types/openai.ts
diff --git a/frontend/lib/api/types/recipe.ts b/frontend/app/lib/api/types/recipe.ts
similarity index 100%
rename from frontend/lib/api/types/recipe.ts
rename to frontend/app/lib/api/types/recipe.ts
diff --git a/frontend/lib/api/types/reports.ts b/frontend/app/lib/api/types/reports.ts
similarity index 100%
rename from frontend/lib/api/types/reports.ts
rename to frontend/app/lib/api/types/reports.ts
diff --git a/frontend/lib/api/types/response.ts b/frontend/app/lib/api/types/response.ts
similarity index 100%
rename from frontend/lib/api/types/response.ts
rename to frontend/app/lib/api/types/response.ts
diff --git a/frontend/lib/api/types/static.ts b/frontend/app/lib/api/types/static.ts
similarity index 100%
rename from frontend/lib/api/types/static.ts
rename to frontend/app/lib/api/types/static.ts
diff --git a/frontend/lib/api/types/user.ts b/frontend/app/lib/api/types/user.ts
similarity index 100%
rename from frontend/lib/api/types/user.ts
rename to frontend/app/lib/api/types/user.ts
diff --git a/frontend/lib/api/user/backups.ts b/frontend/app/lib/api/user/backups.ts
similarity index 100%
rename from frontend/lib/api/user/backups.ts
rename to frontend/app/lib/api/user/backups.ts
diff --git a/frontend/lib/api/user/email.ts b/frontend/app/lib/api/user/email.ts
similarity index 100%
rename from frontend/lib/api/user/email.ts
rename to frontend/app/lib/api/user/email.ts
diff --git a/frontend/lib/api/user/group-cookbooks.ts b/frontend/app/lib/api/user/group-cookbooks.ts
similarity index 100%
rename from frontend/lib/api/user/group-cookbooks.ts
rename to frontend/app/lib/api/user/group-cookbooks.ts
diff --git a/frontend/lib/api/user/group-event-notifier.ts b/frontend/app/lib/api/user/group-event-notifier.ts
similarity index 100%
rename from frontend/lib/api/user/group-event-notifier.ts
rename to frontend/app/lib/api/user/group-event-notifier.ts
diff --git a/frontend/lib/api/user/group-mealplan-rules.ts b/frontend/app/lib/api/user/group-mealplan-rules.ts
similarity index 100%
rename from frontend/lib/api/user/group-mealplan-rules.ts
rename to frontend/app/lib/api/user/group-mealplan-rules.ts
diff --git a/frontend/lib/api/user/group-mealplan.ts b/frontend/app/lib/api/user/group-mealplan.ts
similarity index 100%
rename from frontend/lib/api/user/group-mealplan.ts
rename to frontend/app/lib/api/user/group-mealplan.ts
diff --git a/frontend/lib/api/user/group-migrations.ts b/frontend/app/lib/api/user/group-migrations.ts
similarity index 100%
rename from frontend/lib/api/user/group-migrations.ts
rename to frontend/app/lib/api/user/group-migrations.ts
diff --git a/frontend/lib/api/user/group-multiple-purpose-labels.ts b/frontend/app/lib/api/user/group-multiple-purpose-labels.ts
similarity index 100%
rename from frontend/lib/api/user/group-multiple-purpose-labels.ts
rename to frontend/app/lib/api/user/group-multiple-purpose-labels.ts
diff --git a/frontend/lib/api/user/group-recipe-actions.ts b/frontend/app/lib/api/user/group-recipe-actions.ts
similarity index 100%
rename from frontend/lib/api/user/group-recipe-actions.ts
rename to frontend/app/lib/api/user/group-recipe-actions.ts
diff --git a/frontend/lib/api/user/group-reports.ts b/frontend/app/lib/api/user/group-reports.ts
similarity index 100%
rename from frontend/lib/api/user/group-reports.ts
rename to frontend/app/lib/api/user/group-reports.ts
diff --git a/frontend/lib/api/user/group-seeder.ts b/frontend/app/lib/api/user/group-seeder.ts
similarity index 100%
rename from frontend/lib/api/user/group-seeder.ts
rename to frontend/app/lib/api/user/group-seeder.ts
diff --git a/frontend/lib/api/user/group-shopping-lists.ts b/frontend/app/lib/api/user/group-shopping-lists.ts
similarity index 100%
rename from frontend/lib/api/user/group-shopping-lists.ts
rename to frontend/app/lib/api/user/group-shopping-lists.ts
diff --git a/frontend/lib/api/user/group-webhooks.ts b/frontend/app/lib/api/user/group-webhooks.ts
similarity index 100%
rename from frontend/lib/api/user/group-webhooks.ts
rename to frontend/app/lib/api/user/group-webhooks.ts
diff --git a/frontend/lib/api/user/groups.ts b/frontend/app/lib/api/user/groups.ts
similarity index 100%
rename from frontend/lib/api/user/groups.ts
rename to frontend/app/lib/api/user/groups.ts
diff --git a/frontend/lib/api/user/households.ts b/frontend/app/lib/api/user/households.ts
similarity index 100%
rename from frontend/lib/api/user/households.ts
rename to frontend/app/lib/api/user/households.ts
diff --git a/frontend/lib/api/user/organizer-categories.ts b/frontend/app/lib/api/user/organizer-categories.ts
similarity index 100%
rename from frontend/lib/api/user/organizer-categories.ts
rename to frontend/app/lib/api/user/organizer-categories.ts
diff --git a/frontend/lib/api/user/organizer-tags.ts b/frontend/app/lib/api/user/organizer-tags.ts
similarity index 100%
rename from frontend/lib/api/user/organizer-tags.ts
rename to frontend/app/lib/api/user/organizer-tags.ts
diff --git a/frontend/lib/api/user/organizer-tools.ts b/frontend/app/lib/api/user/organizer-tools.ts
similarity index 100%
rename from frontend/lib/api/user/organizer-tools.ts
rename to frontend/app/lib/api/user/organizer-tools.ts
diff --git a/frontend/lib/api/user/recipe-bulk-actions.ts b/frontend/app/lib/api/user/recipe-bulk-actions.ts
similarity index 100%
rename from frontend/lib/api/user/recipe-bulk-actions.ts
rename to frontend/app/lib/api/user/recipe-bulk-actions.ts
diff --git a/frontend/lib/api/user/recipe-foods.ts b/frontend/app/lib/api/user/recipe-foods.ts
similarity index 100%
rename from frontend/lib/api/user/recipe-foods.ts
rename to frontend/app/lib/api/user/recipe-foods.ts
diff --git a/frontend/lib/api/user/recipe-units.ts b/frontend/app/lib/api/user/recipe-units.ts
similarity index 100%
rename from frontend/lib/api/user/recipe-units.ts
rename to frontend/app/lib/api/user/recipe-units.ts
diff --git a/frontend/lib/api/user/recipes/index.ts b/frontend/app/lib/api/user/recipes/index.ts
similarity index 100%
rename from frontend/lib/api/user/recipes/index.ts
rename to frontend/app/lib/api/user/recipes/index.ts
diff --git a/frontend/lib/api/user/recipes/recipe-comments.ts b/frontend/app/lib/api/user/recipes/recipe-comments.ts
similarity index 100%
rename from frontend/lib/api/user/recipes/recipe-comments.ts
rename to frontend/app/lib/api/user/recipes/recipe-comments.ts
diff --git a/frontend/lib/api/user/recipes/recipe-share.ts b/frontend/app/lib/api/user/recipes/recipe-share.ts
similarity index 100%
rename from frontend/lib/api/user/recipes/recipe-share.ts
rename to frontend/app/lib/api/user/recipes/recipe-share.ts
diff --git a/frontend/lib/api/user/recipes/recipe.ts b/frontend/app/lib/api/user/recipes/recipe.ts
similarity index 100%
rename from frontend/lib/api/user/recipes/recipe.ts
rename to frontend/app/lib/api/user/recipes/recipe.ts
diff --git a/frontend/lib/api/user/upload.ts b/frontend/app/lib/api/user/upload.ts
similarity index 100%
rename from frontend/lib/api/user/upload.ts
rename to frontend/app/lib/api/user/upload.ts
diff --git a/frontend/lib/api/user/user-registration.ts b/frontend/app/lib/api/user/user-registration.ts
similarity index 100%
rename from frontend/lib/api/user/user-registration.ts
rename to frontend/app/lib/api/user/user-registration.ts
diff --git a/frontend/lib/api/user/users.ts b/frontend/app/lib/api/user/users.ts
similarity index 100%
rename from frontend/lib/api/user/users.ts
rename to frontend/app/lib/api/user/users.ts
diff --git a/frontend/lib/api/user/utils.ts b/frontend/app/lib/api/user/utils.ts
similarity index 100%
rename from frontend/lib/api/user/utils.ts
rename to frontend/app/lib/api/user/utils.ts
diff --git a/frontend/lib/icons/icon-type.ts b/frontend/app/lib/icons/icon-type.ts
similarity index 100%
rename from frontend/lib/icons/icon-type.ts
rename to frontend/app/lib/icons/icon-type.ts
diff --git a/frontend/lib/icons/icons.ts b/frontend/app/lib/icons/icons.ts
similarity index 100%
rename from frontend/lib/icons/icons.ts
rename to frontend/app/lib/icons/icons.ts
diff --git a/frontend/lib/icons/index.ts b/frontend/app/lib/icons/index.ts
similarity index 100%
rename from frontend/lib/icons/index.ts
rename to frontend/app/lib/icons/index.ts
diff --git a/frontend/lib/validators/index.ts b/frontend/app/lib/validators/index.ts
similarity index 100%
rename from frontend/lib/validators/index.ts
rename to frontend/app/lib/validators/index.ts
diff --git a/frontend/lib/validators/inputs.test.ts b/frontend/app/lib/validators/inputs.test.ts
similarity index 100%
rename from frontend/lib/validators/inputs.test.ts
rename to frontend/app/lib/validators/inputs.test.ts
diff --git a/frontend/lib/validators/inputs.ts b/frontend/app/lib/validators/inputs.ts
similarity index 100%
rename from frontend/lib/validators/inputs.ts
rename to frontend/app/lib/validators/inputs.ts
diff --git a/frontend/lib/validators/password.test.ts b/frontend/app/lib/validators/password.test.ts
similarity index 100%
rename from frontend/lib/validators/password.test.ts
rename to frontend/app/lib/validators/password.test.ts
diff --git a/frontend/lib/validators/password.ts b/frontend/app/lib/validators/password.ts
similarity index 100%
rename from frontend/lib/validators/password.ts
rename to frontend/app/lib/validators/password.ts
diff --git a/frontend/middleware/admin-only.ts b/frontend/app/middleware/admin-only.ts
similarity index 100%
rename from frontend/middleware/admin-only.ts
rename to frontend/app/middleware/admin-only.ts
diff --git a/frontend/middleware/advanced-only.ts b/frontend/app/middleware/advanced-only.ts
similarity index 100%
rename from frontend/middleware/advanced-only.ts
rename to frontend/app/middleware/advanced-only.ts
diff --git a/frontend/middleware/can-manage-household-only.ts b/frontend/app/middleware/can-manage-household-only.ts
similarity index 100%
rename from frontend/middleware/can-manage-household-only.ts
rename to frontend/app/middleware/can-manage-household-only.ts
diff --git a/frontend/middleware/can-manage-only.ts b/frontend/app/middleware/can-manage-only.ts
similarity index 100%
rename from frontend/middleware/can-manage-only.ts
rename to frontend/app/middleware/can-manage-only.ts
diff --git a/frontend/middleware/can-organize-only.ts b/frontend/app/middleware/can-organize-only.ts
similarity index 100%
rename from frontend/middleware/can-organize-only.ts
rename to frontend/app/middleware/can-organize-only.ts
diff --git a/frontend/middleware/group-only.ts b/frontend/app/middleware/group-only.ts
similarity index 100%
rename from frontend/middleware/group-only.ts
rename to frontend/app/middleware/group-only.ts
diff --git a/frontend/middleware/pwa-share-target-redirect.global.ts b/frontend/app/middleware/pwa-share-target-redirect.global.ts
similarity index 100%
rename from frontend/middleware/pwa-share-target-redirect.global.ts
rename to frontend/app/middleware/pwa-share-target-redirect.global.ts
diff --git a/frontend/pages/admin.vue b/frontend/app/pages/admin.vue
similarity index 100%
rename from frontend/pages/admin.vue
rename to frontend/app/pages/admin.vue
diff --git a/frontend/pages/admin/backups.vue b/frontend/app/pages/admin/backups.vue
similarity index 100%
rename from frontend/pages/admin/backups.vue
rename to frontend/app/pages/admin/backups.vue
diff --git a/frontend/pages/admin/debug/openai.vue b/frontend/app/pages/admin/debug/openai.vue
similarity index 100%
rename from frontend/pages/admin/debug/openai.vue
rename to frontend/app/pages/admin/debug/openai.vue
diff --git a/frontend/pages/admin/debug/parser.vue b/frontend/app/pages/admin/debug/parser.vue
similarity index 100%
rename from frontend/pages/admin/debug/parser.vue
rename to frontend/app/pages/admin/debug/parser.vue
diff --git a/frontend/pages/admin/maintenance/index.vue b/frontend/app/pages/admin/maintenance/index.vue
similarity index 100%
rename from frontend/pages/admin/maintenance/index.vue
rename to frontend/app/pages/admin/maintenance/index.vue
diff --git a/frontend/pages/admin/manage/groups/[id].vue b/frontend/app/pages/admin/manage/groups/[id].vue
similarity index 100%
rename from frontend/pages/admin/manage/groups/[id].vue
rename to frontend/app/pages/admin/manage/groups/[id].vue
diff --git a/frontend/pages/admin/manage/groups/index.vue b/frontend/app/pages/admin/manage/groups/index.vue
similarity index 100%
rename from frontend/pages/admin/manage/groups/index.vue
rename to frontend/app/pages/admin/manage/groups/index.vue
diff --git a/frontend/pages/admin/manage/households/[id].vue b/frontend/app/pages/admin/manage/households/[id].vue
similarity index 100%
rename from frontend/pages/admin/manage/households/[id].vue
rename to frontend/app/pages/admin/manage/households/[id].vue
diff --git a/frontend/pages/admin/manage/households/index.vue b/frontend/app/pages/admin/manage/households/index.vue
similarity index 100%
rename from frontend/pages/admin/manage/households/index.vue
rename to frontend/app/pages/admin/manage/households/index.vue
diff --git a/frontend/pages/admin/manage/users/[id].vue b/frontend/app/pages/admin/manage/users/[id].vue
similarity index 100%
rename from frontend/pages/admin/manage/users/[id].vue
rename to frontend/app/pages/admin/manage/users/[id].vue
diff --git a/frontend/pages/admin/manage/users/create.vue b/frontend/app/pages/admin/manage/users/create.vue
similarity index 100%
rename from frontend/pages/admin/manage/users/create.vue
rename to frontend/app/pages/admin/manage/users/create.vue
diff --git a/frontend/pages/admin/manage/users/index.vue b/frontend/app/pages/admin/manage/users/index.vue
similarity index 100%
rename from frontend/pages/admin/manage/users/index.vue
rename to frontend/app/pages/admin/manage/users/index.vue
diff --git a/frontend/pages/admin/setup.vue b/frontend/app/pages/admin/setup.vue
similarity index 100%
rename from frontend/pages/admin/setup.vue
rename to frontend/app/pages/admin/setup.vue
diff --git a/frontend/pages/admin/site-settings.vue b/frontend/app/pages/admin/site-settings.vue
similarity index 100%
rename from frontend/pages/admin/site-settings.vue
rename to frontend/app/pages/admin/site-settings.vue
diff --git a/frontend/pages/forgot-password.vue b/frontend/app/pages/forgot-password.vue
similarity index 100%
rename from frontend/pages/forgot-password.vue
rename to frontend/app/pages/forgot-password.vue
diff --git a/frontend/pages/g/[groupSlug]/cookbooks/[slug].vue b/frontend/app/pages/g/[groupSlug]/cookbooks/[slug].vue
similarity index 100%
rename from frontend/pages/g/[groupSlug]/cookbooks/[slug].vue
rename to frontend/app/pages/g/[groupSlug]/cookbooks/[slug].vue
diff --git a/frontend/pages/g/[groupSlug]/cookbooks/index.vue b/frontend/app/pages/g/[groupSlug]/cookbooks/index.vue
similarity index 100%
rename from frontend/pages/g/[groupSlug]/cookbooks/index.vue
rename to frontend/app/pages/g/[groupSlug]/cookbooks/index.vue
diff --git a/frontend/pages/g/[groupSlug]/index.vue b/frontend/app/pages/g/[groupSlug]/index.vue
similarity index 100%
rename from frontend/pages/g/[groupSlug]/index.vue
rename to frontend/app/pages/g/[groupSlug]/index.vue
diff --git a/frontend/pages/g/[groupSlug]/r/[slug]/index.vue b/frontend/app/pages/g/[groupSlug]/r/[slug]/index.vue
similarity index 100%
rename from frontend/pages/g/[groupSlug]/r/[slug]/index.vue
rename to frontend/app/pages/g/[groupSlug]/r/[slug]/index.vue
diff --git a/frontend/pages/g/[groupSlug]/r/create.vue b/frontend/app/pages/g/[groupSlug]/r/create.vue
similarity index 100%
rename from frontend/pages/g/[groupSlug]/r/create.vue
rename to frontend/app/pages/g/[groupSlug]/r/create.vue
diff --git a/frontend/pages/g/[groupSlug]/r/create/bulk.vue b/frontend/app/pages/g/[groupSlug]/r/create/bulk.vue
similarity index 100%
rename from frontend/pages/g/[groupSlug]/r/create/bulk.vue
rename to frontend/app/pages/g/[groupSlug]/r/create/bulk.vue
diff --git a/frontend/pages/g/[groupSlug]/r/create/debug.vue b/frontend/app/pages/g/[groupSlug]/r/create/debug.vue
similarity index 100%
rename from frontend/pages/g/[groupSlug]/r/create/debug.vue
rename to frontend/app/pages/g/[groupSlug]/r/create/debug.vue
diff --git a/frontend/pages/g/[groupSlug]/r/create/html.vue b/frontend/app/pages/g/[groupSlug]/r/create/html.vue
similarity index 100%
rename from frontend/pages/g/[groupSlug]/r/create/html.vue
rename to frontend/app/pages/g/[groupSlug]/r/create/html.vue
diff --git a/frontend/pages/g/[groupSlug]/r/create/image.vue b/frontend/app/pages/g/[groupSlug]/r/create/image.vue
similarity index 100%
rename from frontend/pages/g/[groupSlug]/r/create/image.vue
rename to frontend/app/pages/g/[groupSlug]/r/create/image.vue
diff --git a/frontend/pages/g/[groupSlug]/r/create/index.vue b/frontend/app/pages/g/[groupSlug]/r/create/index.vue
similarity index 100%
rename from frontend/pages/g/[groupSlug]/r/create/index.vue
rename to frontend/app/pages/g/[groupSlug]/r/create/index.vue
diff --git a/frontend/pages/g/[groupSlug]/r/create/new.vue b/frontend/app/pages/g/[groupSlug]/r/create/new.vue
similarity index 100%
rename from frontend/pages/g/[groupSlug]/r/create/new.vue
rename to frontend/app/pages/g/[groupSlug]/r/create/new.vue
diff --git a/frontend/pages/g/[groupSlug]/r/create/url.vue b/frontend/app/pages/g/[groupSlug]/r/create/url.vue
similarity index 100%
rename from frontend/pages/g/[groupSlug]/r/create/url.vue
rename to frontend/app/pages/g/[groupSlug]/r/create/url.vue
diff --git a/frontend/pages/g/[groupSlug]/r/create/zip.vue b/frontend/app/pages/g/[groupSlug]/r/create/zip.vue
similarity index 100%
rename from frontend/pages/g/[groupSlug]/r/create/zip.vue
rename to frontend/app/pages/g/[groupSlug]/r/create/zip.vue
diff --git a/frontend/pages/g/[groupSlug]/recipes/categories/index.vue b/frontend/app/pages/g/[groupSlug]/recipes/categories/index.vue
similarity index 100%
rename from frontend/pages/g/[groupSlug]/recipes/categories/index.vue
rename to frontend/app/pages/g/[groupSlug]/recipes/categories/index.vue
diff --git a/frontend/pages/g/[groupSlug]/recipes/finder/index.vue b/frontend/app/pages/g/[groupSlug]/recipes/finder/index.vue
similarity index 100%
rename from frontend/pages/g/[groupSlug]/recipes/finder/index.vue
rename to frontend/app/pages/g/[groupSlug]/recipes/finder/index.vue
diff --git a/frontend/pages/g/[groupSlug]/recipes/tags/index.vue b/frontend/app/pages/g/[groupSlug]/recipes/tags/index.vue
similarity index 100%
rename from frontend/pages/g/[groupSlug]/recipes/tags/index.vue
rename to frontend/app/pages/g/[groupSlug]/recipes/tags/index.vue
diff --git a/frontend/pages/g/[groupSlug]/recipes/timeline.vue b/frontend/app/pages/g/[groupSlug]/recipes/timeline.vue
similarity index 100%
rename from frontend/pages/g/[groupSlug]/recipes/timeline.vue
rename to frontend/app/pages/g/[groupSlug]/recipes/timeline.vue
diff --git a/frontend/pages/g/[groupSlug]/recipes/tools/index.vue b/frontend/app/pages/g/[groupSlug]/recipes/tools/index.vue
similarity index 100%
rename from frontend/pages/g/[groupSlug]/recipes/tools/index.vue
rename to frontend/app/pages/g/[groupSlug]/recipes/tools/index.vue
diff --git a/frontend/pages/g/[groupSlug]/shared/r/[id].vue b/frontend/app/pages/g/[groupSlug]/shared/r/[id].vue
similarity index 100%
rename from frontend/pages/g/[groupSlug]/shared/r/[id].vue
rename to frontend/app/pages/g/[groupSlug]/shared/r/[id].vue
diff --git a/frontend/pages/group/data.vue b/frontend/app/pages/group/data.vue
similarity index 100%
rename from frontend/pages/group/data.vue
rename to frontend/app/pages/group/data.vue
diff --git a/frontend/pages/group/data/categories.vue b/frontend/app/pages/group/data/categories.vue
similarity index 100%
rename from frontend/pages/group/data/categories.vue
rename to frontend/app/pages/group/data/categories.vue
diff --git a/frontend/pages/group/data/foods.vue b/frontend/app/pages/group/data/foods.vue
similarity index 100%
rename from frontend/pages/group/data/foods.vue
rename to frontend/app/pages/group/data/foods.vue
diff --git a/frontend/pages/group/data/index.vue b/frontend/app/pages/group/data/index.vue
similarity index 100%
rename from frontend/pages/group/data/index.vue
rename to frontend/app/pages/group/data/index.vue
diff --git a/frontend/pages/group/data/labels.vue b/frontend/app/pages/group/data/labels.vue
similarity index 100%
rename from frontend/pages/group/data/labels.vue
rename to frontend/app/pages/group/data/labels.vue
diff --git a/frontend/pages/group/data/recipe-actions.vue b/frontend/app/pages/group/data/recipe-actions.vue
similarity index 100%
rename from frontend/pages/group/data/recipe-actions.vue
rename to frontend/app/pages/group/data/recipe-actions.vue
diff --git a/frontend/pages/group/data/recipes.vue b/frontend/app/pages/group/data/recipes.vue
similarity index 100%
rename from frontend/pages/group/data/recipes.vue
rename to frontend/app/pages/group/data/recipes.vue
diff --git a/frontend/pages/group/data/tags.vue b/frontend/app/pages/group/data/tags.vue
similarity index 100%
rename from frontend/pages/group/data/tags.vue
rename to frontend/app/pages/group/data/tags.vue
diff --git a/frontend/pages/group/data/tools.vue b/frontend/app/pages/group/data/tools.vue
similarity index 100%
rename from frontend/pages/group/data/tools.vue
rename to frontend/app/pages/group/data/tools.vue
diff --git a/frontend/pages/group/data/units.vue b/frontend/app/pages/group/data/units.vue
similarity index 100%
rename from frontend/pages/group/data/units.vue
rename to frontend/app/pages/group/data/units.vue
diff --git a/frontend/pages/group/index.vue b/frontend/app/pages/group/index.vue
similarity index 100%
rename from frontend/pages/group/index.vue
rename to frontend/app/pages/group/index.vue
diff --git a/frontend/pages/group/migrations.vue b/frontend/app/pages/group/migrations.vue
similarity index 100%
rename from frontend/pages/group/migrations.vue
rename to frontend/app/pages/group/migrations.vue
diff --git a/frontend/pages/group/reports/[id].vue b/frontend/app/pages/group/reports/[id].vue
similarity index 100%
rename from frontend/pages/group/reports/[id].vue
rename to frontend/app/pages/group/reports/[id].vue
diff --git a/frontend/pages/household/index.vue b/frontend/app/pages/household/index.vue
similarity index 100%
rename from frontend/pages/household/index.vue
rename to frontend/app/pages/household/index.vue
diff --git a/frontend/pages/household/mealplan/planner.vue b/frontend/app/pages/household/mealplan/planner.vue
similarity index 100%
rename from frontend/pages/household/mealplan/planner.vue
rename to frontend/app/pages/household/mealplan/planner.vue
diff --git a/frontend/pages/household/mealplan/planner/edit.vue b/frontend/app/pages/household/mealplan/planner/edit.vue
similarity index 99%
rename from frontend/pages/household/mealplan/planner/edit.vue
rename to frontend/app/pages/household/mealplan/planner/edit.vue
index 518acae91..95370f86e 100644
--- a/frontend/pages/household/mealplan/planner/edit.vue
+++ b/frontend/app/pages/household/mealplan/planner/edit.vue
@@ -236,7 +236,7 @@
import { format } from "date-fns";
import type { SortableEvent } from "sortablejs";
import { VueDraggable } from "vue-draggable-plus";
-import type { MealsByDate } from "./types";
+import type { MealsByDate } from "./view.vue";
import type { useMealplans } from "~/composables/use-group-mealplan";
import { usePlanTypeOptions, getEntryTypeText } from "~/composables/use-group-mealplan";
import RecipeCardImage from "~/components/Domain/Recipe/RecipeCardImage.vue";
diff --git a/frontend/pages/household/mealplan/planner/view.vue b/frontend/app/pages/household/mealplan/planner/view.vue
similarity index 98%
rename from frontend/pages/household/mealplan/planner/view.vue
rename to frontend/app/pages/household/mealplan/planner/view.vue
index 8e741bbf7..b037da480 100644
--- a/frontend/pages/household/mealplan/planner/view.vue
+++ b/frontend/app/pages/household/mealplan/planner/view.vue
@@ -53,12 +53,16 @@