A simple yet clean Movie Listing iOS application built with Swift, using UIKit and MVVM with Coordinator pattern. It integrates with the TMDB API to fetch and display movie data and allows users to mark movies as favorites using Core Data for local persistence.
- ✅ Fetch and display a list of popular movies from TMDB.
- 📝 Each movie item in the list shows:
- Title
- Release date
- Rating (average vote)
- Vote count
- Favorite button (toggle and persist)
- 📄 Tap on a movie to view a detail screen showing:
- Movie poster
- Release date
- Original language
- Full description (overview)
- ❤️ Favorite movies are stored locally using Core Data.
- 🌐 Network calls are handled using async/await with Combine for reactivity.
The app is structured using MVVM (Model-View-ViewModel) with the Coordinator pattern to handle navigation and separation of concerns.
- UIKit: Interface and view building.
- MVVM: architecture for separation of UI and business logic.
- Coordinator Pattern: For decoupling navigation logic.
- Core Data: For persisting favorite movies locally.
- Combine: For reactive data binding and state management.
- Async/Await: For modern and clean asynchronous code.
- Combine (built-in)
- TMDB REST API (via URLSession)
- Core Data (native Apple persistence framework)
| Movie List | Movie Details |
|---|---|
![]() |
![]() |
-
Clone the repository:
git clone https://github.com/iOSMahmoudSaad/Paymob-Task.git
-
Open the
.xcodeprojor.xcworkspacefile. -
Insert your TMDB API key in the appropriate configuration (usually in a
Secrets.plistor constant file):let apiKey = "YOUR_TMDB_API_KEY"
-
Build and run on simulator or real device.
- Search functionality.
- Add Favourite Screen .
- Refcator architecture to Clean architecture With MVVM
Mahmoud Saad iOS Engineer Feel free to reach out on LinkedIn

