MovieMach is a cutting-edge Android application that allows users to explore a vast collection of movies using modern technologies and best practices. This README file provides an overview of the app, its features, and the technologies utilized to bring it to life.
![](https://private-user-images.githubusercontent.com/64840495/260328699-3c7e7c57-fffb-4998-8579-410698c48999.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjYxNDAxODAsIm5iZiI6MTcyNjEzOTg4MCwicGF0aCI6Ii82NDg0MDQ5NS8yNjAzMjg2OTktM2M3ZTdjNTctZmZmYi00OTk4LTg1NzktNDEwNjk4YzQ4OTk5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTEyVDExMTgwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWE5ZDNlZmY1MjYzNzZiNWMzN2QxNGQ4MjI5OWZlNDE5N2I2YmY1NWU4YmVmY2YxMjYwYzkzOWRlOWM1Njc5MzgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.QzWILVwJ-83MHKIsO8UinSGUTodh6rs8wu3sVvrGHWs)
![](https://private-user-images.githubusercontent.com/64840495/260328711-f5ce4b62-cab8-47bd-9be3-591439f4aaed.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjYxNDAxODAsIm5iZiI6MTcyNjEzOTg4MCwicGF0aCI6Ii82NDg0MDQ5NS8yNjAzMjg3MTEtZjVjZTRiNjItY2FiOC00N2JkLTliZTMtNTkxNDM5ZjRhYWVkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTEyVDExMTgwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQwOTkzZjIxMGI0NDcyZWZkMzhmYjk2N2JhYjRmNDg1Njg2MGQ4MDYxMTdmODQ4Y2E4MGMzYjdkZTJiZmYzYjAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.K9aT7BlSnW8N9HtBh_vikIgs8DHHuvOm-LuL6t_wOJI)
![](https://private-user-images.githubusercontent.com/64840495/260328838-a48bbdc6-3398-46a5-9453-c93046be9926.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjYxNDAxODAsIm5iZiI6MTcyNjEzOTg4MCwicGF0aCI6Ii82NDg0MDQ5NS8yNjAzMjg4MzgtYTQ4YmJkYzYtMzM5OC00NmE1LTk0NTMtYzkzMDQ2YmU5OTI2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTEyVDExMTgwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTc4YzM0NGM3YmFkZGI1N2VjZTBlYTZiZmExMDk2MjI2ZWYwMDQwZjk3NjdlYmNjY2E2MTYxZWQzOWU4OGE4MzcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.UPJ4qWvET0ds5PSLvP_GKn2Ah6HjU7bTgTYhFcZTr-k)
![](https://private-user-images.githubusercontent.com/64840495/260328841-fcbaeff9-30c8-4477-8b9e-ca50c34f6a1f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjYxNDAxODAsIm5iZiI6MTcyNjEzOTg4MCwicGF0aCI6Ii82NDg0MDQ5NS8yNjAzMjg4NDEtZmNiYWVmZjktMzBjOC00NDc3LThiOWUtY2E1MGMzNGY2YTFmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTEyVDExMTgwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWVmZGMxZjQ5N2YxZmVkNDE1NDhkNDc1MTJiZDU4MjJiOTcyNzY0MGU3NGIwMDljZTI4MDk3MjZjZTk1MTkxZTImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.0xIF6J380yIr1JQI5lLk03jRRLL-Kuf47erwfmuUTLA)
![](https://private-user-images.githubusercontent.com/64840495/260328886-f7de6ba5-b1ce-46aa-a118-584d2243caa6.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjYxNDAxODAsIm5iZiI6MTcyNjEzOTg4MCwicGF0aCI6Ii82NDg0MDQ5NS8yNjAzMjg4ODYtZjdkZTZiYTUtYjFjZS00NmFhLWExMTgtNTg0ZDIyNDNjYWE2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTEyVDExMTgwMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTk2NmE3ODgxZDc5ODkxNTA0ZjMyMGViNmQ2ZTFkYzRkZmMyZDFiMWViZDhjYzJhNjA0ZjgwMDcyODg3MmMxNDEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.PPu7MAKWwUrbgwE2KUOdX7kLy4MZ0zsLnXxZd4tCzBM)
MovieMach comes with a range of exciting features that enhance the user experience and provide seamless navigation through the world of movies:
🔸 Pagination with Paging 3 Library : MovieMach employs the Paging 3 library to efficiently load and display large datasets of movies. This ensures smooth scrolling and optimal memory management while browsing through the movie catalog.
🔸 MVVM Architecture: The app follows the Model-View-ViewModel (MVVM) architectural pattern. This separation of concerns enhances code organization, maintainability, and testability. It also allows for easier adoption of new features and updates.
🔸 Dependency Injection with Hilt : Hilt, a dependency injection library for Android, is used in MovieMach to manage the injection of components, such as repositories, view models, and network services. This promotes a modular and clean codebase while simplifying unit testing.
🔸 Network Calls with Retrofit : MovieMach leverages Retrofit, a powerful HTTP client for Android, to handle network requests. This ensures efficient communication between the app and the backend servers, facilitating the retrieval of movie data.
🔸 Coroutines Flow Coroutines Flow for LiveData Updates: To provide real-time updates to the UI, MovieMach utilizes Coroutines Flow in combination with LiveData. This combination allows the app to observe data changes and deliver them to the UI efficiently, resulting in a responsive and up-to-date user experience.
🔸 Room Database : MovieMach integrates the Room Persistence Library for local storage. This allows the app to cache movie data locally, enabling users to access their favorite movies even when offline.
🔸 Image Loading with Glide Library : The Glide library is integrated into MovieMach for smooth and optimized image loading. It automatically handles image caching, resizing, and rendering, contributing to fast and visually appealing movie browsing.
To set up MovieMach on your local machine, follow these steps:
1️⃣ Clone this repository to your preferred directory using the following command:
git clone https://github.com/carpodok/MovieMatch
2️⃣ Open the cloned project in Android Studio.
3️⃣ In order to fetch movie data, you will need an API key from The Movie Database (TMDb). You can obtain your API key by signing up at here
4️⃣ Once you have your API key, add the key into Constants object class like the following:
object Constants {
const val API_KEY = "YOUR_API_KEY" //Replace YOUR_API_KEY with your actual TMDb API key.
...
}
5️⃣ Build and run the app on an emulator or a physical device.
If you have any questions, feedback, or suggestions, feel free to reach out to us. You can contact us via email at cobanalitalha@gmail.com or open an issue in this repository.
Happy movie browsing with MovieMach!