This project is an iOS application that allows users to retrieve a list of dessert recipes, sort them alphabetically, and view detailed information about each meal, including its ingredients and instructions. The application is built using a mix of UIKit and SwiftUI to demonstrate proficiency in both frameworks and follows the Model-View-ViewModel (MVVM) architecture for a clean and maintainable codebase. The project does not have a team set (its set to none), this is to reduce any potential errors since its not going to be published on the App Store/Testflight, lastly since i was able to test through simulator. Enjoy reviewing!
- Retrieve Dessert Recipes: Fetch a list of dessert recipes from an external API.
- Sorting: Sort the list of desserts in both ascending and descending alphabetical order.
- Lazy Loading: Images are lazily loaded and cached to improve performance since there can be lots of images.
- Detailed View of Meals: View detailed information about a selected meal, including:
- Meal Name and Thumbnail
- Instructions
- Ingredients and Measurements
- Link to YouTube video (if available)
- Search Functionality: Search through the list of desserts to find specific recipes.
- SwiftUI Integration: Detailed meal views are implemented using SwiftUI for a modern UI experience.
- UIKit: Used for the main structure and navigation of the app.
- SwiftUI: Utilized for the detailed view of each meal.
- Combine: Reactive programming and handling asynchronous data streams.
- XCTest: Implemented unit tests to ensure the reliability and correctness of the app.
The application is built using the Model-View-ViewModel (MVVM) architecture, which helps in separating the business logic from the UI and ensures a clear, maintainable, and testable codebase.
- Home View: Displays the list of dessert recipes and includes sorting and search functionalities.
- Detail View: Shows detailed information about a selected meal using SwiftUI.
- View Models: Handles the business logic and data manipulation for the views.
- Networking Layer: Responsible for making API calls to retrieve dessert data.
- Unit Tests: Comprehensive tests for view models and networking components to ensure proper functionality.
The most up to date project is in the "main" branch.