PavelSidyakin / CatBreeds

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cat Breeds

An example of Kotlin Multiplatform app.
Supported targets: android, desktop (JVM).

Popular technologies/libraries used

  • Common: Clean Architecture, Kotlin Multiplatform
  • Asynchnonusity: Kotlin Coroutines
  • Dependency Injection: Kodein
  • UI pattern: MVI (MVIKotlin library)
  • UI layouts: Jetbrains Compose, Android Compose
  • Navigation: Decompose
  • Local storage: SqlDelight
  • HTTP client: Ktor
  • Localization: Moko resources
  • Unit testing: Kotest (framework, assertions), MockK

Remote API

The app uses The Cat API.

To run the app you need an API key. Get a free API Key here: https://thecatapi.com/signup

Put in your home gradle.properties:

catApiKey=YOUR_API_KEY

Module structure

Notation

- Android module

- JVM module

- Multiplatform module

Modules

app:common - shared code for the platform applications

app:android - android application

app:desktop - desktop (jvm) application


di - contains reference to global DI (service locator)

resources - contains string resources

utils:common_utils - various utilities

utils:presentation_utils - various presentation utilities

widgets:compose - compose widgets


data:remote - remote API

data:local - local database


feature:breed:data - local and remote repositories implementation

feature:breed:domain - manages the remote and the local repositories


feature:breed_list:breed_list_domain - prepares data for breed list

feature:breed_list:breed_list_ui - UI for breed list (MVI and view)


feature:breed_info:breed_info_domain - prepares data for breed info

feature:breed_info:breed_info_ui - UI for breed info (MVI and view)


feature:root_screen:common - root screen navigation logic

feature:root_screen:android - contains MainActivity

feature:root_screen:desktop - contains MainScreen composable (compose-jb)

Screenshots

Android

Desktop

About


Languages

Language:Kotlin 100.0%