MyWatch is a movie and TV show catalog app built using the MVVM architecture pattern with the addition of Controllers to handle the business logic and Managers to handle requests to third-party services used by the app. The app utilizes Firebase for two-way connection via phone number and SMS verification. Additionally, users can register/login using their Google or Apple accounts for a seamless authentication experience.
First Screen |
After User press: Tv Shows btn |
After User scroll down |
After User press: Category btn |
Search Screen |
Search A |
Search Spider Man |
- Browse movies and TV shows in different categories, including trending, popular, recently added, and top-rated.
- Browse a "Coming Soon" section to get a sneak peek at upcoming releases.(
- Utilize a search feature to find specific movies or TV shows based on user preferences.
- Filter the displayed content by category, allowing users to quickly find content of interest.
- Includes authentication functionality using Firebase, enabling users to create accounts and securely log in.
- Provides the ability for users to save a list of their most loved movies for easy access and personalization.
- Offers additional information on each show, such as a brief summary and access to trailers via youtube.
To install the MyWatch app, follow these steps:
Clone the repository from GitHub. Open the project in Xcode. Ensure that the required dependencies are installed using CocoaPods. Run the following command in the terminal: Copy code pod install Build and run the app on an iOS device or simulator running a compatible version of iOS.
The MyWatch app relies on the following dependencies:
- SDWebImage
- GoogleAPIClientForREST/YouTube
- GoogleSignIn
- GoogleSignInSwift
- FirebaseAnalytics
- FirebaseAuth
- FirebaseFirestore
- RxSwift
- RxCocoa
- SVGKit
- MaterialComponents
Make sure to use the appropriate versions of these dependencies as specified in the Podfile.
The MyWatch app follows the MVVM-C (Model-View-ViewModel-Controller) architecture pattern. The app's business logic is handled by controllers, while the data is managed by view models. This separation of concerns allows for better code organization and maintainability.