Skip to content

PixabayEye — Cross-platform Image Search app powered by Kotlin Multiplatform, Compose Multiplatform, Ktor — code once, run everywhere (Android, iOS, Web, Desktop)

License

Notifications You must be signed in to change notification settings

siarhei-luskanau/pixabayeye

Repository files navigation

🌎 PixabayEye - Cross-Platform Image Search app with Kotlin Multiplatform

License Platform


✨ Introduction

PixabayEye is a modern, lightweight application designed to showcase the power of Kotlin Multiplatform for real-world app development.
With a single codebase, developers can efficiently target Android, iOS, Web, and Desktop — dramatically reducing development time and maintenance efforts.
Built with love for developers who believe in writing code once and deploying everywhere! 🚀


🔥 Key Features

  • Cross-Platform Compatibility: Android, iOS, Web (browser), and Desktop (JVM).
  • 💬 Shared Logic: Core modules for UI, networking, and data management.
  • 📚 Modern Libraries Integration:
    • Compose Multiplatform for seamless UI across devices.
    • Ktor for efficient networking.
  • 🛠 Custom Gradle Convention Plugins: Simplify Kotlin Multiplatform project structure.
  • 📸 Screenshot Testing: Roborazzi with Robolectric enables screenshot testing.

🚀 Getting Started

Prerequisites

  • JDK 17 installed
  • Android SDK set in local.properties
  • KDoctor to verify environment
  • Xcode (for iOS) and Android Studio (for Android/Web/Desktop)

Setup

git clone https://github.com/siarhei-luskanau/pixabayeye.git
cd pixabayeye
./gradlew doctor

Create a local.properties file with:

sdk.dir=/path/to/your/Android/Sdk

🛠 Running the App

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 UI tests on the connected device: ./gradlew :composeApp:managedVirtualDeviceDebugAndroidTest -Pandroid.testoptions.manageddevices.emulator.gpu=swiftshader_indirect

Desktop

Run the desktop application: ./gradlew :composeApp:run Run the desktop hot reload application: ./gradlew :composeApp:jvmRunHot) 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

Wasm Browser (Alpha)

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

Screenshot Testing

Record a screenshot: ./gradlew recordRoborazziDebug Output directory is screenshots/


🤝 Contributing

We welcome contributions!

  1. Fork the repo 🍴
  2. Create your feature branch (git checkout -b feature/YourFeature)
  3. Commit your changes (git commit -m 'Add some feature')
  4. Push to the branch (git push origin feature/YourFeature)
  5. Open a Pull Request 🚀

You can also create issues for bug reports, discussions, or feature requests.


📜 License

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


📸 Screenshots

Android iOS Desktop Web
Android Screenshot iOS Screenshot Desktop Screenshot Web Screenshot

🌟 Call to Action

If you find PixabayEye useful or inspiring,
please ⭐ star this repository to support the project and help it grow!
Let's make cross-platform development easier, faster, and more fun together! 🚀

About

PixabayEye — Cross-platform Image Search app powered by Kotlin Multiplatform, Compose Multiplatform, Ktor — code once, run everywhere (Android, iOS, Web, Desktop)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages