This is an example how multiplatform development can be used to effectively extract and reuse logic. It contains multiple clients that implement the same logic and single backend. The only common part for all this project is Data Model, so it is placed in common module which is shared among all the platforms. All client applications are based on MVP (Model-View-Presenter). Presenters are common for all of them and they are placed in common-client module. It contains all business logic and is well tested. Views are implemented separately for every platform. Presenters are using Data Model, and communicating with Views from behind the interfaces that are placed in common-client module. On the other side Presenters are communicating with repositories (network API, databases etc.) which are hidden behind an interfaces (for unit-testing purposes) and specified as an expected declarations which have actial declaration in platform modules (common-client-jvm and common-client-js). Application is composing Kotlin Kotlin Academy and presenting them together. It also allows giving the feedback this article or to Kotlin Academy.