Skip to content

An (KMP) app using Jetpack Compose Multiplatform, Ktor, Koin, and Voyager. It follows Clean Architecture and UDF principles to build a modern cross-platform app for Android, iOS, and desktop.

License

Notifications You must be signed in to change notification settings

FrankieShao/FlickFusion

Repository files navigation

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.

About

An (KMP) app using Jetpack Compose Multiplatform, Ktor, Koin, and Voyager. It follows Clean Architecture and UDF principles to build a modern cross-platform app for Android, iOS, and desktop.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published