Giter VIP home page Giter VIP logo

catbreeds's Introduction

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

catbreeds's People

Contributors

pavelsidyakin avatar pavelsidyakin-warnermedia avatar

Stargazers

 avatar Jamshidbek avatar  avatar Şevval Serbes avatar Gennadiy Shishkin avatar Vladlen Ivanov avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.