/photos-kmp

A Kotlin Multiplatform Application that displays images from the unsplash api

Primary LanguageKotlin

Photos Multiplatform 📷

This Kotlin Multiplatform project fetches photos from the Unsplash API and displays them on both desktop and Android platforms. It leverages a shared module for platform-agnostic logic, data models, and UI components. Supports RTL for RTL languages.

Supports;
Android - ✅
Desktop - ✅

🛠️ WIP 🛠️

Please note that this project is still under development.

Project Structure

  • shared: Contains platform-independent code, including data models, network requests, business logic, and shared UI components.
  • desktopApp: Contains jvm-specific logic e.g dependency injection.
  • androidApp: Contains Android-specific logic e.g dependency injection.

Screenshots

CI CD logo CI CD logo
CI CD logo CI CD logo

Libraries

  • Compose Multiplatform: Used for building a shared UI across Android and desktop platforms.
  • kotlinx.serialization: A Kotlin serialization library used for converting Kotlin data classes to and from JSON and other formats. It provides a type-safe and efficient way to handle serialization in your application.
  • DataStore: A multiplatform version of DataStore, used for storing key-value pairs and typed objects in a shared preferences-like manner across platforms.
  • Coil: An image loading library for Android and Compose Multiplatform
  • Ktor: A framework used for making network requests. Ktor is used in this project to handle HTTP requests and responses efficiently, allowing for seamless communication with backend services.
  • Multiplatform-Paging: A library that helps in loading and displaying data efficiently by supporting pagination. This is particularly useful for handling large datasets or lists that need to be loaded incrementally.
  • Room: A multiplatform version of Room, used for managing local SQLite databases. In this project, it is used to save and retrieve favorite photos with ease, providing a reliable data persistence layer.