Skip to content

Latest commit

 

History

History
590 lines (582 loc) · 19.8 KB

multiplatform-samples.md

File metadata and controls

590 lines (582 loc) · 19.8 KB

This is a curated list of projects that aims to show robust and unique applications of Kotlin Multiplatform.

We are not currently accepting contributions to this page. To feature your project as a sample of Kotlin Multiplatform, use the kotlin-multiplatform-sample topic on GitHub. See the GitHub documentation to learn how to feature your project in topics.

{style="note"}

Some projects share almost all their code using Compose Multiplatform for the user interface. Others use native code for the user interface and share, for example, only the data model and algorithms. To create your own brand new Kotlin Multiplatform application, we recommend using the web wizard.

You can find even more sample projects on GitHub via the kotlin-multiplatform-sample topic. To explore the ecosystem as a whole, check out the kotlin-multiplatform topic.

Name Description What's shared? Noteworthy libraries User interface
Image Viewer An application for capturing, viewing, and storing pictures. Includes support for maps. Uses Compose Multiplatform for the UI. Introduced at KotlinConf 2023.
  • UI
  • Model
  • Networking
  • Animation
  • Data storage
  • kotlinx-serialization
  • kotlinx-datetime
  • kotlinx-coroutines
  • play-services-maps
  • play-services-locations
  • android-maps-compose
  • accompanist-permissions
  • Jetpack Compose on Android
  • Compose Multiplatform on iOS, desktop, and web
  • Confetti A showcase of many different aspects of Kotlin Multiplatform and Compose Multiplatform. The use case is an application for fetching and displaying information about conference schedules. Includes support for the Wear and Auto platforms. Uses GraphQL for client-server communications. The architecture is discussed in-depth at KotlinConf 2023.
  • UI
  • Model
  • Networking
  • Data storage
  • Navigation
  • kotlinx-serialization
  • kotlinx-datetime
  • kotlinx-coroutines
  • decompose
  • koin
  • jsonpathkt-kotlinx
  • horologist
  • google-cloud
  • firebase
  • bare-graphql
  • apollo
  • accompanist
  • Jetpack Compose on Android, Auto, and Wear
  • Compose Multiplatform on iOS, desktop, and web
  • KMPizza The project demonstrates how to develop a Kotlin Multiplatform app from scratch to a cloud-deployed powerhouse of pizza-making: the final app stores and displays pizza recipes. Integrated under the hood with Jetpack Compose, Ktor, PostgreSQL, Docker, and a number of other tools, this sample is an adventure in KMP experience. The step-by-step guide for making an app like that is available at the author's blog.
  • UI
  • Model
  • Networking
  • Data storage
  • Navigation
  • kotlinx-serialization
  • kotlinx-coroutines
  • ktor
  • koin
  • exposed
  • postgresql
  • sqldelight
  • awssdk
  • Jetpack Compose on Android
  • SwiftUI on iOS
  • NYTimes KMP A Compose Multiplatform based version of the New York Times application. Allows the user to browse and read articles. Note that to build and run the application, you will need an API key from the New York Times.
  • UI
  • Model
  • Networking
  • kotlinx-serialization
  • kotlinx-datetime
  • kotlinx-coroutines
  • ktor-client
  • molecule
  • decompose
  • horologist
  • Jetpack Compose on Android and Wear
  • Compose Multiplatform on iOS and desktop
  • Sessionize / Droidcon An application for viewing the agenda at Droidcon events using the Sessionize API. Can be customized for use with any event that stores talks in Sessionize. Integrates with Firebase and so requires a Firebase account to run.
  • UI
  • Model
  • Networking
  • Data storage
  • kotlinx-coroutines
  • kotlinx-datetime
  • ktor-client
  • koin
  • multiplatform-settings
  • firebase
  • kermit
  • accompanist
  • hyperdrive-multiplatformx
  • SQLDelight
  • Jetpack Compose on Android
  • Compose Multiplatform on iOS
  • Chat A demonstration of how to embed Compose Multiplatform components within a SwiftUI interface. The use case is online messaging.
  • UI
  • Model
  • Networking
  • Jetpack Compose on Android
  • Compose Multiplatform on iOS, desktop, and web
  • SwiftUI on iOS
  • KMM RSS Reader A sample application for consuming RSS feeds designed to show how Kotlin Multiplatform can be used in production. The UI is implemented natively, but there is an experimental branch showing how Compose Multiplatform could be used on iOS and desktop. Networking is accomplished using the Ktor HTTP Client, while XML parsing is implemented natively. The Redux architecture is used for sharing UI State.
  • Model
  • Networking
  • UI state
  • Data storage
  • kotlinx-serialization
  • kotlinx-coroutines
  • ktor-client
  • voyager
  • coil
  • multiplatform-settings
  • napier
  • SQLDelight
  • Jetpack Compose on Android
  • Compose Multiplatform on iOS and desktop (on experimental branch)
  • SwiftUI on iOS
  • Tivi An application for tracking television shows via Trakt.tv. Uses Coroutines for concurrency and Compose for the UI. Designed to showcase the latest libraries and tools.
  • UI
  • Model
  • Networking
  • kotlinx.serialization
  • kotlinx.coroutines
  • ktor-client
  • lyricist
  • circuit
  • firebase
  • SQLDelight
  • Jetpack Compose on Android
  • Compose Multiplatform on iOS and desktop
  • People In Space A showcase of the many different platforms on which Kotlin Multiplatform can run. The use case is to show the number of people currently in space and the position of the International Space Station.
  • Model
  • Networking
  • Data storage
  • kotlinx-serialization
  • kotlinx-coroutines
  • kotlinx-datetime
  • ktor-client
  • koin
  • multiplatform-settings
  • SQLDelight
  • Jetpack Compose on Android
  • Compose Multiplatform on iOS, desktop, and web
  • SwiftUI on iOS, macOS, and watchOS
  • Focus Bloom A productivity and time management application. Allows users to schedule tasks and provides feedback on their accomplishments.
  • UI
  • Model
  • Animation
  • Data storage
  • kotlinx.serialization
  • kotlinx.coroutines
  • kotlinx.datetime
  • koin
  • voyager
  • multiplatform-settings
  • SQLDelight
  • Jetpack Compose on Android
  • Compose Multiplatform on iOS and desktop
  • Recipe App A demonstration application for viewing recipes. Showcases the use of animations.
  • UI
  • Model
  • Data storage
  • kotlinx-coroutines

  • Jetpack Compose on Android
  • Compose Multiplatform on iOS, desktop, and web
  • Kotlin Multiplatform Sample A simple calculator application. Showing how to integrate Kotlin and native code using expected and actual declarations.

    Algorithms

  • Jetpack Compose on Android
  • SwiftUI
  • KaMPKit A collection of code and tools for Kotlin Multiplatform development. Designed to showcase libraries, architectural choices, and best practices when building Kotlin Multiplatform applications. The use case is downloading and displaying information about dog breeds. Introduced in this video tutorial.
  • Model
  • Networking
  • ViewModel
  • Data storage
  • ktor-client
  • koin
  • multiplatform-settings
  • kermit
  • SQLDelight
  • Jetpack Compose on Android
  • SwiftUI on iOS
  • D-KMP-sample A sample application for the Declarative UIs with Kotlin MultiPlatform architecture. The use case is retrieving and displaying vaccination statistics for different countries.
  • Networking
  • Data storage
  • ViewModel
  • Navigation
  • ktor-client
  • multiplatform-settings
  • SQLDelight
  • Jetpack Compose on Android
  • SwiftUI on iOS
  • Notflix An application that consumes data from The Movie Database to display current trending, upcoming, and popular movies and TV shows. Requires that you create an API key with The Movie Database.
  • Model
  • Networking
  • Caching
  • ViewModel
  • kotlinx-coroutines
  • kotlinx-serialization
  • kotlinx-datetime
  • ktor-client
  • multiplatform-settings
  • napier
  • Jetpack Compose on Android
  • SwiftUI on iOS
  • Twine - RSS Reader Twine is a multiplatform RSS reader app built using Kotlin and Compose Multiplatform. It features a nice user interface and experience to browse through the feeds and supports Material 3 content-based dynamic theming.
  • Model
  • Networking
  • Data Storage
  • UI
  • kotlinx-coroutines
  • kotlinx-serialization
  • kotlinx-datetime
  • ktor-client
  • napier
  • decompose
  • Compose Multiplatform on Android and iOS
  • Shopping By KMP A cross-platform application that is built using Jetpack Compose Multiplatform, a declarative framework for sharing UIs across multiple platforms with Kotlin. The application allows users to browse, search, and purchase products from a shopping catalog on Android, iOS.
  • Model
  • Networking
  • Data Storage
  • UI
  • ViewModel
  • Animation
  • Navigation
  • UI state
  • Use Case
  • Unit Test
  • UI Test
  • kotlinx-coroutines
  • kotlinx-serialization
  • kotlinx-datetime
  • ktor-client
  • datastore
  • koin
  • Compose Navigation
  • Coil
  • Kotest
  • Compose Multiplatform on Android and iOS
  • Music App KMP An application showcasing how to interact with native APIs like MediaPlayer on different platforms. It uses Spotify API to fetch data.
  • Model
  • Networking
  • UI
  • kotlinx-coroutines
  • kotlinx-serialization
  • ktor-client
  • decompose
  • Compose Multiplatform on Android, iOS, desktop, and web
  • Rijksmuseum Rijksmuseum is a multimodular Kotlin and Compose Multiplatform app that offers an immersive way to explore the art collection of the renowned Rijksmuseum in Amsterdam. It utilizes the Rijksmuseum API to fetch and display detailed information about various artworks, including images and descriptions.
  • UI
  • Model
  • Networking
  • Navigation
  • ViewModel
  • kotlinx-coroutines
  • kotlinx-serialization
  • ktor-client
  • koin
  • Compose Navigation
  • Coil
  • Jetpack ViewModel
  • Compose Multiplatform on Android, iOS, desktop, and web