Skip to content

Latest commit

 

History

History
102 lines (79 loc) · 5 KB

README.md

File metadata and controls

102 lines (79 loc) · 5 KB

FlickFusion

Welcome to the FlickFusion repository!

FlickFusion is an app built using Kotlin Multiplatform (KMP) that leverages the TMDB API to provide movie, TV show, and series fanatics with the latest information on trending, popular, upcoming, on-air, and many other films.

This kotlin-platform project showcases the integration of cutting-edge technologies and demonstrates a sleek UI design using Compose multiplatform, Ktor for network communication, Koin for dependency injection, Voyager for navigation, coil for image loading and also Clean Architecture.

Supports: Android 📱, iOS📱, Desktop

Architecture ✨

Architecture

  • A layered Domain-Driven Design architecture:
    • Core Layer: Contains Domain and Data modules, forming the heart of the business logic.
    • Framework Layer: Includes Framework modules (Network and Persist, implementing Data interfaces) for external interactions.
    • Feature Layer: Houses Common-UI and Util modules for shared resources, alongside feature-specific modules (Main, Search, Favorite, Detail, Profile).
    • App Layer: The topmost layer, orchestrating the entire application.
    • Key Concepts:

Tech Stack ✨

  • Compose Multiplatform - 100% compose based.
  • Kotlin Multiplatform (KMP) - Enables sharing code across multiple platforms, such as Android, iOS, and the web, ensuring maximum code reuse and efficiency.
  • Coroutines & Flow - Provides a framework for asynchronous programming and handling streams of data, allowing for efficient, non-blocking code execution.
  • Ktor - A Kotlin framework for building asynchronous servers and clients in connected systems, used for handling network operations and API requests.
  • Koin - A lightweight dependency injection framework for Kotlin, making it easy to manage dependencies and build testable and maintainable applications.
  • Coil3 - An image loading library for Android backed by Kotlin Coroutines, offering efficient image loading and caching.
  • Voyager - A multiplatform navigation library for KMP, simplifying the implementation of navigation within the app.
  • Lottie - Library for rendering Adobe After Effects animations natively on mobile and web, enhancing the app's UI with high-quality animations.
  • Kotlin Serialization - Library for JSON serialization and deserialization, enabling seamless handling of JSON data.
  • kotlin.test - Testing framework for Kotlin, used for writing unit tests to ensure the app's functionality and reliability.
  • mockk - Mocking library for Kotlin, used for creating mock objects in unit tests to simulate the behavior of real objects.
  • Compose Testing - Provides tools and utilities for testing Compose UI components, ensuring the app's UI is functioning as expected.
  • turbine - A testing library for Kotlin Flow, used for testing asynchronous code and handling streams of data in unit tests.
  • Robolectric - Testing framework for Android, used for running unit tests on Android devices and emulators.

Screenshots

Android

iOS

Android iOS

Desktop

Desktop

Setup Requirements

Obtain an API key from TMDB and add it to your local.properties file:

apiKey=your api key
accountId=your account id

Todo

  • Search module
  • persist data
  • Error Handling

Contribute

If you want to contribute to this, you're always welcome!

License

This project is licensed under the MIT License - see the LICENSE file for details.