Skip to content
/ Pexels Public

A multiple platform client for Pexels photos using Compose multiplatform

Notifications You must be signed in to change notification settings

linroid/Pexels

Repository files navigation

Pexels

A multiplatform client for Pexels photos, powered by Compose Multiplatform

Supported Platforms

Platform Supported Screenshot
Desktop(Linux, Windows, macOS)
Web
iOS
Android

You can download prebuilt app file here

Web version: https://linroid.github.io/Pexels/

Features

  • Pagination
  • Pull to refresh
  • Adaptive UI
  • Photo zoom in and zoom out
  • Transition
  • Cached photo list data

Used Libraries

  • ktor: A multiplatform asynchronous HTTP client, which allows you to make requests and handle responses.
  • kotlinx.serialization: A multiplatform JSON serialization library.
  • koin: A pragmatic lightweight dependency injection framework for Kotlin & Kotlin Multiplatform.
  • Voyager: A pragmatic navigation library for Compose.
  • Build Config: A plugin for generating BuildConstants.
  • KStore: A tiny Kotlin multiplatform library that assists in saving and restoring objects to and from disk.
  • Napier: A logger library for Kotlin Multiplatform.
  • coil: Image loading for Compose Multiplatform.

Unit Tests

Test

  • PexelsApiTest
  • ObjectStoreTest

Before running!

  • check your system with KDoctor
  • install JDK 17 or higher on your machine
  • add local.properties file to the project root and set a path to Android SDK there

Android

To run the application on android device/emulator:

  • open project in Android Studio and run imported android run configuration

To build the application bundle:

  • run ./gradlew :composeApp:assembleDebug
  • find .apk file in composeApp/build/outputs/apk/debug/composeApp-debug.apk Run android simulator UI tests: ./gradlew :composeApp:pixel5Check

Desktop

Run the desktop application: ./gradlew :composeApp:run Run desktop UI tests: ./gradlew :composeApp:jvmTest

iOS

To run the application on iPhone device/simulator:

  • Open iosApp/iosApp.xcproject in Xcode and run standard configuration
  • Or use Kotlin Multiplatform Mobile plugin for Android Studio Run iOS simulator UI tests: ./gradlew :composeApp:iosSimulatorArm64Test

Experimental Browser (Wasm)

Run the browser application: ./gradlew :composeApp:wasmJsBrowserDevelopmentRun --continue Run browser UI tests: ./gradlew :composeApp:wasmJsBrowserTest

About

A multiple platform client for Pexels photos using Compose multiplatform

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages