Hendrik Hogertz 7c824b492e Modernize networking layer and fix category navigation and recipe list bugs
Network layer:
- Replace static CookbookApi protocol with instance-based CookbookApiProtocol
  using async/throws instead of tuple returns
- Refactor ApiRequest to use URLComponents for proper URL encoding, replace
  print statements with OSLog, and return typed NetworkError cases
- Add structured NetworkError variants (httpError, connectionError, etc.)
- Remove global cookbookApi constant in favor of injected dependency on AppState
- Delete unused RecipeEditViewModel, RecipeScraper, and Scraper playground

Data & model fixes:
- Add custom Decodable for RecipeDetail with safe fallbacks for malformed JSON
- Make Category Hashable/Equatable use only `name` so NavigationSplitView
  selection survives category refreshes with updated recipe_count
- Return server-assigned ID from uploadRecipe so new recipes get their ID
  before the post-upload refresh block executes

View updates:
- Refresh both old and new category recipe lists after upload when category
  changes, mapping empty recipeCategory to "*" for uncategorized recipes
- Raise deployment target to iOS 18, adopt new SwiftUI API conventions
- Clean up alerts, onboarding views, and settings

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-15 00:47:28 +01:00
2024-01-11 20:55:18 +01:00
2024-01-26 10:19:56 +01:00
2023-10-03 12:11:32 +02:00
2023-09-17 16:41:09 +02:00
2024-10-29 13:44:16 +01:00

Nextcloud-Cookbook-iOS

A Nextcloud Cookbook native iOS/iPadOS/MacOS client, built using Swift and SwiftUI.

⚠️ This is not a standalone application! ⚠️

See here for the corresponding Nextcloud server application.

You can download the app from the AppStore:

Download on the App Store

Core Features

  • Load recipes from nextcloud instance
  • Offline recipes
  • Recipe search function
  • Add new recipes
  • Edit recipes
  • Delete recipes
  • Login with Nextcloud account using two factor authentication
  • Login with Nextcloud account using app-tokens
  • Support for multiple languages
  • MacOS support (through Mac Catalyst)
  • Light and dark mode support
  • Share recipes (by name and keyword)
  • Import recipes
  • Keep display awake when viewing recipes
  • Ingredient shopping list

Roadmap

  • Version 1.9: Enhancements to recipe editing for better intuitiveness; user interface design improvements for recipe viewing.

  • Version 1.10: Recipe ingredient calculator: Enables calculation of ingredient quantities based on a specifiable yield number.

  • Version 1.11: Decoupling of internal recipe representation from the Nextcloud Cookbook recipe representation. This change provides increased flexibility for API updates and enables the introduction of features not currently supported by the Cookbook API, such as uploading images. This update will take some time, but will therefore result in simpler, better maintainable code. Update: I will continue to work on this update in January 2024.

  • Version 1.12 and beyond (Ideas for the future; integration not guaranteed!):

    • Allow adding custom items to the grocery list.

    • Fuzzy search for recipe names and keywords.

    • An in-app timer for the cook time specified in a recipe.

    • Search for recipes based on left-over ingredients.

    • An option to use the app without a Nextcloud account.

    • An option to specify the recipe folder in the Files app, to enable the app to work on the recipe files directly.

If you would like to suggest new features/improvements or report bugs, please open an Issue!

Screenshots

The following screenshots might not be up to date, since there can always be minor user interface changes.

iOS Screenshots

/Screenshots/iOS_cookbooks.png /Screenshots/iOS_recipes.png /Screenshots/iOS_recipe_detail_1.png /Screenshots/iOS_recipe_detail_2.png

iPadOS Screenshots

/Screenshots/iPadOS_cookbooks_recipes.png /Screenshots/iPadOS_recipe_detail.png

Supported Languages

If you wish to see additional languages supported, please don't hesitate to open an Issue. Any help with translation is appreciated.

  • English
  • German
  • Spanish (mostly machine translated)
  • French (mostly machine translated)

Further information

Cookbook Client is available on the App Store for free, and will be updated regularly. This app is a hobby project, which is why development progress may be slower than desired. If you are interested in an iOS native CookBook client, you are welcome to contribute! In case you discover any bugs or encounter problems, feel free to point them out by creating an Issue.

Description
A Nextcloud Cookbook native iOS/iPadOS/MacOS client.
Readme GPL-3.0 31 MiB
Languages
Swift 100%