A native iOS application that allows users to browse and discover movies using The Movie Database (TMDB) API. The app follows clean architecture principles with a clear separation of concerns.
- Models: Contains response models for API data
CastResponseCreditsResponseGenresResponseMovieDetailsResponseMovieResponse
- Networking: Handles API communication
ApiService: Manages all API calls to TMDB
- Repository: Data access layer
MovieRepository: Handles movie data operations
- Models: Core business models
CastModelGenresModelMovieDetailsModelMovieModel
- Design System
Typo: Typography definitions
- Models: View-specific models
FavoriteMovie: Model for favorite movies
- Views: UI Components
- Favourite: Favorite movies screen
FavouriteMoviesView
- Home: Main screen
HomeViewHomeViewModel
- MovieDetails: Movie details screen
MovieDetailsViewMovieDetailsViewModel
- Favourite: Favorite movies screen
- Preview Content
- Fonts: Metropolis-Regular and Metropolis-SemiBold
- Preview Assets
- Assets: App images and resources
- Browse popular movies
- View movie details
- See movie cast and crew
- Browse movie genres
- Save favorite movies
- Home screen with curated content
- Detailed movie information view
- Swift
- SwiftUI
- MVVM Architecture
- TMDB API integration
- Custom Design System
- Custom Typography (Metropolis font family)
- iOS 18.1+
- Xcode 16.1+
- Clone the repository
git clone https://github.com/your-username/tmdb-ios.git- Open
tmdb-ios.xcodeprojin Xcode - Add your TMDB API key in the appropriate configuration file
- Build and run the project
The project follows a clean architecture approach with three main layers:
- Data Layer: Handles external data sources and API communication
- Domain Layer: Contains business logic and models
- Presentation Layer: Manages UI and user interactions using MVVM pattern
- API Key: Obtain an API key from TMDB and configure it in the project.
- Fork the Repository: Create a personal fork of the repository.
- Create a Branch: Create a new branch for your feature or bugfix.
- Submit a Pull Request: Submit a pull request with a detailed description of your changes.
