Skip to content

A simple app to retrieve and display a list of Restaurants launches from https://developers.zomato.com/api using MVVM pattern with RxSwift in Swift.

Notifications You must be signed in to change notification settings

hadanischal/NearbyRestaurants

Repository files navigation

Nearby Restaurants list App

Requirements:

  • iOS 13.0+
  • Xcode 11.6
  • Swift 5.2

Objective:

A Restaurant app to demonstrate some aspect of clean architecture using MVVM pattern, RxSwift, SOLID principles , code organisation, loose coupling, unit testing , Dark mode support and some of the best practices used in modern iOS programming using Swift.

The restaurants data of Australian cities are fetched from Zomato API https://developers.zomato.com/api. Please create a free API-KEY from the website if required.

App Goal:

  • This project was intended to work as a Resturant search demo projects for iOS using Swift.
  • The demo uses the Zomato API since it is well-maintained API which returns information in a JSON format.
  • Use of UITableViewController to display Resturant list information.
  • Implemented Unit test for business logic

Installation

  • Xcode 11.6(required)
  • Clean /DerivedData folder if any
  • Run the pod install pod install
  • Run Cuckoo script to Mock your Swift objects ./Cuckoo-GeneratedMocks.sh
  • Run SwiftGen script to generator Swift code for assets, Localizable.strings etc ./generate-swiftgen.sh
  • Then clean and build the project in Xcode

3rd Party Libraries

Technical notes:

  • MVVM - My preferred architecture.
    • MVVM stands for “Model View ViewModel”
    • It’s a software architecture often used by Apple developers to replace MVC. Model-View-ViewModel (MVVM) is a structural design pattern that separates objects into three distinct groups:
  • Models hold application data. They’re usually structs or simple classes.
  • Views display visual elements and controls on the screen. They’re typically - subclasses of UIView.
  • View models transform model information into values that can be displayed on a view. They’re usually classes, so they can be passed around as references.

Alt text

Screenshot:

Screen Shot 1

Screen Shot 2

App Demo

About

A simple app to retrieve and display a list of Restaurants launches from https://developers.zomato.com/api using MVVM pattern with RxSwift in Swift.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages