Skip to content

MustafaKoceerr/MovieAppFeatureBased

Repository files navigation

Movie Discovery App

Modern Mobile Architecture & Clean Development Practices

Kotlin Jetpack Compose Clean Architecture Modular Design

A modern, modular, and robust movie discovery application built with Clean Architecture, best practices, and a focus on scalability and maintainability.


πŸ“Έ App Gallery

πŸ“± Light Theme Screens

Splash Screen Welcome Screen Home Screen(1) Home Screen(2)
List Screen(1) List Screen(2) Details Screen(1) Details Screen(2)
Settings Screen(1) Settings Screen(2) Search Screen(1) Search Screen(2)

πŸ“± Dark Theme Screens

Splash Screen Welcome Screen Home Screen(1) Home Screen(2)
List Screen(1) List Screen(2) Details Screen(1) Details Screen(2)
Settings Screen(1) Settings Screen(2) Search Screen(1) Search Screen(2)

πŸ“± Other Screens

Share Content(1) Share Content(2) Error Screen Error Screen Auth Screen

πŸ“½οΈ Feature Demonstrations (GIFs)

Details Feature List Feature Search Feature


πŸš€ Overview

Movie Discovery App allows users to explore, search, and discover movies with a beautiful, fast, and offline-first experience. The app is designed with a strong focus on modularity, scalability, and clean code principles.


✨ Features

User-Facing Features

  • Multi-language support with instant language switching (app & API language)
  • Light, dark, and system theme selection with a single tap
  • Explore movies by category: Popular, Now Playing, Top Rated, Upcoming
  • Powerful search for movies, series, and actors with pagination
  • Offline-first experience: fast loading, caching, and pagination (Paging 3)
  • Seamless login with token-based authentication (web approval flow)
  • Persistent login: token stored securely, auto-login if valid
  • Easy logout with a single tap
  • Settings screen for theme, language, and account management
  • Share movie details with friends
  • Error handling with user-friendly messages
  • Smooth transitions and animations for enhanced user experience
  • Shimmer loading animation on every screen for network data

Architectural Highlights

  • Clean Architecture with strict separation of concerns
  • Modularized project structure (feature & core modules)
  • Type-safe, encapsulated navigation via navigation-contracts
  • Centralized, unified database (Room)
  • AppException: unified error handling, surfaced to UI via core-ui
  • Offline-first data strategy for home/list screens (cache, fast load)
  • Pagination in search & list screens
  • Language & API key as interceptors for network requests
  • Enum-based language architecture: add a new language with a single line
  • UI contracts: consistent, maintainable screen logic
  • Best practices applied, pitfalls avoided
  • Shimmer loading animation for all network-fetched data (user always sees a polished loading state)
  • Smooth transitions between screens and UI states

πŸ› οΈ Technologies & Libraries

  • Kotlin 2.1.0
  • Jetpack Compose (UI) BOM 2025.06.01
  • Hilt (Dependency Injection) 2.56.2
  • Room (Database) 2.6.1
  • Retrofit (Networking) 2.11.0 & OkHttp 4.12.0
  • Paging 3 (Pagination, offline-first) 3.2.1
  • DataStore (Preferences) 1.1.7
  • Kotlin Coroutines & Flow (Async, reactive) 1.9.0
  • Coil (Image loading) 3.2.0
  • JUnit 4.13.2, Mockito 5.8.0, Espresso 3.6.1 (Testing)
  • Modular Gradle setup

πŸ—οΈ Project Structure

app/
core-domain/
core-ui/
core-network/
core-database/
core-preferences/
core-android/
feature-movies/
feature-auth/
feature-splash/
navigation-contracts/

πŸ“¦ Module Responsibilities

  • app: Application entry, DI setup, navigation host, global config
  • core-domain: Business logic, domain models, contracts
  • core-ui: Shared UI components, themes, error UI, UI contracts
  • core-network: Network layer, API config, interceptors
  • core-database: Room DB, DAOs, caching
  • core-preferences: DataStore, user preferences (theme, language, token)
  • core-android: Android-specific utilities, base ViewModel
  • feature-movies: Home, list, details, search screens & logic
  • feature-auth: Authentication (login, logout, token flow)
  • feature-splash: Splash screen, initial loading
  • navigation-contracts: Type-safe navigation contracts, decoupled navigation

🧩 Architectural Summary

  • Clean Architecture: Strict separation (domain, data, presentation)
  • MVI Pattern: Unidirectional data flow, UI contracts for all screens
  • Dependency Injection: Hilt for scalable, testable DI
  • Modularization: Each feature/core is a separate Gradle module
  • Offline-First: Caching, fast load, pagination
  • Type-Safe Navigation: navigation-contracts for decoupled, safe navigation
  • Unified Error Handling: AppException, surfaced to UI
  • Best Practices: Naming, file structure, code quality

πŸ“ Planned / Upcoming Features

  • βœ… Multi-language support (add new language via enum)
  • βœ… Offline-first home/list screens
  • βœ… Unified error handling
  • βœ… Modular navigation
  • πŸ”œ Profile feature (planned)
  • πŸ”œ Push notifications (planned)
  • πŸ”œ Favorites and rating feature for logged-in users (planned)
  • πŸ”œ Comprehensive testing (planned)
  • πŸ”œ Onboarding flow with ViewPager2 (planned)

πŸ”₯ Don’t Just Browse β€” Explore the Engine Behind the Project!

πŸš€ Dive into the Full Technical Deep-Dive β†’

Curious about how everything is built? Discover detailed architecture explanations, real-world code examples, and the decisions that power this project. If you want to see the structure and implementation up close, this is the place to start!


πŸŽ₯ Full App Experience (YouTube Video)

If you want to see the full experience of the application in action, check out the video below:

πŸ‘‰ Watch Full Demo on YouTube Β»


πŸ“² Download & Test the App

Experience the app firsthand on your Android device. You can download the latest release APK directly from the GitHub Releases page.

Download APK from Releases

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages