Skip to content

antonyalkmim/norris-facts-ios

Repository files navigation

Norris Facts (norris-facts-ios)

An iOS app that shows Chuck Norris facts and let you share the facts with your friends. This app uses the ChuckNorris API to request the facts and facts suggestions.


Screenshots

All screens can be found in the design file and any changes in the UI needs to update the design file first.

Requirements

This app was built and test using this tools/environments. No guarantee that this app runs on previous versions of these tools.

  1. Xcode 11.4.1
  2. Swift 5
  3. Cocoapods version 1.9.3

Getting Started

  1. Clone this repository
  2. Run pod install
  3. Run project 🎉

Architecture

This app conforms to MVVM (Model-View-ViewModel) pattern to help us with unit tests and Coordinators which is responsible for the application's navigation flow.

In this project we adopt the reactive programing style and we use RxSwift for it. We use reactive programing to bind view models properties to the view controlers, call for API requests and/or listen for database changes and also to get rid of delegate methods to link Coordinators, View Models and View Controllers.

Dependencies

All of dependencies and third libraries used in this project as well as its versions can be found in Podfile.

Fastlane

This project use the Fastlane to automate the development and release process. To use it we need to install the dependencies in Gemfile first. This will install Cocoapods, Fastlane and its plugins used in fastlane scripts.

$ bundle install

Scripts

  • Run tests and UI tests (this runs on all pull requests)

    $ bundle exec fastlane ios tests
  • Run release process (this runs on all push to master branch)

    $ bundle exec fastlane ios release

Future works

  • Add more tests and increase code coverage percentage
  • Add tool to track code coverage. Ex: CodeCov
  • Add fastlane scripts to auto generate GitHub release tags
  • Add support for more languages (translate the Localizable.strings)
  • Notifications with random facts
  • Widget with random facts
  • Add support for iPad
  • Add support for Mac
  • Add app for AppleWatch
  • Add A11n for accessibility

Special thanks for flaticon for the free assets.