Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sergheev Adrian - Application #41

Open
wants to merge 21 commits into
base: master
Choose a base branch
from

Conversation

adriansergheev
Copy link

@adriansergheev adriansergheev commented Mar 26, 2021

Movie App

Features

  • Main View. Shows the list of the movies. Can be filtered by popular, trending, top rated.
  • Detail View, shows detailed info about a specific movie.
  • Clean Architecture (Subjectively)
  • Error Handling
  • Unfortunately, no tests. I'd happily have done TDD if i'd have more time though ; )

Bonus Features

  • Pagination (infinite scrolling)
  • Pull to Refresh

Technical Overview

  • Generally, the architecture is inspired from pointfree.co creators, specifically the style used here: https://github.com/kickstarter/ios-oss.
  • Swift\RxSwift. While Combine+SwiftUI could have been used and I am comfortable with those technologies as well, I have written more code in RxSwift thus given the limited time I chose RxSwift. Plain Swift (no reactive stuff) works as well.
  • Plain navigation. No Coordinators given there are very few views.
  • MVVM + Redux. Redux is used for more complex state management, in our case pagination.
  • Expandable and highly customizable networking layer. New endpoints (supporting search, via GET /search/movie for example) can be added in less than 100 lines of code. Please check MovieApiProvider Enum as an example. No dependencies were used for this. Some of the code was reused from my older projects. The endpoint for fetching reviews is as well ready to use.
  • Dependency Injection. Usually I am using a service-locator for this (such as Resolver: https://github.com/hmlongco/Resolver) however for our app it is an overkill.
  • RxDataSources for effective collectionView diffing.
  • UI is a mix of storyboards&code. Generally code is prioritized(As in, text is not hardcoded so it can be further localized etc.). For larger scale projects, only code.

How to run:

cd into Movie folder, run pod install, open Movie.xcworkspace.

Screenshots

Simulator Screen Shot - iPhone 11 - 2021-03-26 at 22 20 04
Simulator Screen Shot - iPhone 11 - 2021-03-26 at 22 19 58

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant