Skip to content

Simple android client that uses Pexels API, created to demonstrate usage of Modern Android development tools - (Kotlin, Coroutines, Flow, Koin, Architecture Components, MVVM, Retrofit, Moshi, Material Components).

License

Notifications You must be signed in to change notification settings

karic-kenan/PxlArt

Repository files navigation

banner

PxlArt

Simple android client 📱 that uses Pexels API to fetch curated photos but also provides option to search for them. Idea behind the app is to demonstrate usage of Modern Android development tools. Dedicated to all Android Developers with ❤️.

  • Supports dark theme 🌗
  • Supports parallax scrolling ⛓

Install

Clone the repository and in gradle_properties file add your Pexels API key which you can get here.

After you add the key, rebuild the projects so changes can have effect and simply run the app. It's that simple.

Note: Your API key needs to be more secure than this, however this is for learning purposes.

Built with

  • Kotlin - First class and official programming language for Android development.
  • Coroutines - For asynchronous and more..
  • Flow - A cold asynchronous data stream that sequentially emits values and completes normally or with an exception.
  • Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
    • LiveData - Data objects that notify views when the underlying database changes.
    • ViewModel - Stores UI-related data that isn't destroyed on UI changes.
    • ViewBinding - Generates a binding class for each XML layout file present in that module and allows you to more easily write code that interacts with views.
    • Paging - Allows you to perfom paging by loading small data chuncks at the time.
  • Dependency Injection -
    • Koin - A pragmatic lightweight dependency injection framework for Kotlin developers.
  • Retrofit - A type-safe HTTP client for Android and Java.
  • Moshi - A modern JSON library for Kotlin and Java.
  • Moshi Converter - A Converter which uses Moshi for serialization to and from JSON.
  • Coil-kt - An image loading library for Android backed by Kotlin Coroutines.
  • Material Components for Android - Modular and customizable Material Design UI components for Android.

Package Structure

io.aethibo.pxlart           # Root Package
.
├── core                   # Core functionality of the application
│   ├── data               # For data handling
|   │   ├── remote         # Remote data handlers
│   │   └── repositories   # Single source of data
│   ├── di                 # Dependency injection
│   ├── entities           # Model classes  
│   └── utils              # Utility classes tied to core of the application
|
|
├── domain                 # Use cases per feature or request
│   ├── curated            # Provides use cases to fetch curated photos 
│   └── search             # Provides use cases to search photos
|
├── features               # Features in the application
│   ├── curated            # Flow to fetch and display curated photos
|   ├── search             # Flow to search and display photos based on query
│   ├── profile            # Profile - currently only serves as placeholder
│   ├── shared             # Common items used in both curated and search flows
└──  ── utils              # Utility Classes / Kotlin extensions

Architecture

This app uses MVVM (Model View View-Model) architecture.

Contribute

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

Contact

If you need any help, feel free to contact me: kenan.karic@outlook.com.

License

License

About

Simple android client that uses Pexels API, created to demonstrate usage of Modern Android development tools - (Kotlin, Coroutines, Flow, Koin, Architecture Components, MVVM, Retrofit, Moshi, Material Components).

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages