Skip to content

Repository files navigation

PlatedRewards

About

PlatedRewards is a modular, state-driven iOS app designed to let users explore a variety of dishes from around the world. The app combines a smooth, intuitive user experience with a scalable and testable architecture.

Submission scope

Users can browse meals by category (e.g., dessert, entrée) or by region (e.g., USA, Japan), view detailed information for each dish, and explore additional resources like YouTube videos or source links.

Architecture details

  • Applied Model-View-ViewModel architecture, ensuring clear separation of concerns between business logic and UI.
  • PlatedRewards embraces amalgamation of mainstream concepts in UIKit while making them adaptable with SwiftUI style paradigm by following Coordinator pattern.
  • Utilizes highly adaptable networking service implementation inspired from this architecture for scalable structure that embraces usage of Dependency Injection for testability and flexibility.
  • Implemented unit testing and Test Driven Development practices ensuring high-quality, bug-free functionality.

Features

  • Browse Dishes by Category and Area: Ability to view dishes by selecting categories (e.g., dessert, entrée) or areas (e.g., USA, Japan).
  • Modular list selection: By default the dessert list is being loaded which is paired with the selection of the filtering system embracing flexibility.
  • Dark mode support: By using @Environment to make adaptable UI.
  • View Meal Details: Includes dish name, instructions, thumbnail image, and links to YouTube videos or source articles.
  • Unified Logging support: The app includes unified logging to track errors during network requests, making debugging and monitoring easier.
  • Modularity: Components are organized in a way which embrace decoupling, making the codebase highly maintainable and follows SOLID principles.
  • File organizaton: Added focus in maintaining flexible navigation across the codebase by following good file organization practices.
  • State-Driven UI: The app uses custom state declaration to drive UI updates.
  • Faster API fetch: Batch fetching and a well-structured Router and Repository pattern ensure efficient API interactions, resulting in faster loading times.

Building and testing environment

  • Deployment target iOS 17+ and tested on all iPhone screen sizes that are on iOS 17
  • Built on Xcode 15.4

Screenshots

  • Logging

Logging

  • Screens

MainDarkMainLightDetailDarkDetailLight

About

PlatedRewards is a modular, state-driven iOS app designed to let users explore a variety of dishes from around the world. The app combines a smooth, intuitive user experience with a scalable and testable architecture.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages