Avocado

Avocado Avocado

Featuring complex nested components, this recipe app highlights SwiftUI forms, adaptive colors and images, and a deep user-journey.

  • iOS 15+


  • SwiftUI 2.0

Concept

Avocados is the most feature-rich and complex project built as a part of this series. The app is a food avocado lovers' dream, bringing together facts, recipes, a ripeness chart, and nutritional information in an elegant and engaging UI. Additionally, the project introduces the Form container, allowing for easily structured content to be displayed or collected by the app.

Solution

This app is comprised of four main views, each delivering specialized content. The primary navigation is managed through a standard TabView container which displays each view upon user selection. These views are comprised of dynamic components which parse their content and display it in each respective view based on structured loops.

Similar to previous app builds with static content, the data utilized by the application is stored as a struct in the on-device app storage itself, allowing for fast retrieval and permanent storage of all data. Components such as the recipe views which consume this data, parse each element -including the step-by-step instructions- and display the data in responsive ScrollView containers which adapt to the length of the content displayed within them.


This app features several nested elements, including varying navigation components, and elements such as the bookmarking and rating icons which simulate user interaction within the app. In addition to these complex SwiftUI layouts, the Avocado app introduces the Form container. This container type is utilized to provide a structured interface for the app settings, and automatically adapt the design to respond to user input.

Avocado

Analysis

This app brings together several of the previously developed concepts to create a gorgeous food app, with a variety of content. However, the limitations inherent in the persistent app storage, mean that user interactions such as bookmarks and ratings are not easily implemented. This could be rectified by replacing the static data with a Core Data structure, and would allow for increased flexibility and customization of the app and underlying information (e.g., the storing of private notes or comments within recipes). Furthermore, utilizing the CloudKit framework alongside Core Data would allow for future app iterations to introduce new recipes on-the-fly, or even sync settings across installs.

Form containers allow for further simplification of structured builds, and respond to their enclosed content without the need for manually specifying dimensions or restrictions for displaying the content. This functionality, paired with a CloudKit Core Data implementation, could allow for features such as a user profile, as well as user-generated recipes or other social-content such as public comments on recipes.