HeyTips is a fullstack cross-platform mobile app that demonstrates modern Compose Multiplatform development with Decompose, Koin, SqlDelight, Ktor based on Multi-Module MVI architecture. Includes admin panel and user sreens based on one technology.
Tip
If you want to see more the Kotlin Multiplatform content, check out the telegram channel.
Go to the Releases to download the latest APK.
- Ios/Android/Desktop
- Caching/Pagination
- Image Picker/Internet Images
- Multi-module/MVI
- Unit tests
- MVC ktor server
common_cast.mp4
- Minimum SDK level 24
- iOS Deployment Target 15.3
- Kotlin Multiplatform based, Compose Multiplatform for Android/Ios/Desktop ui interfaces.
- Kotlin Multiplatform
- Expected/actual: Expected and actual declarations allow you to access platform-specific APIs from Kotlin Multiplatform modules. You can provide platform-agnostic APIs in the common code.
- Gradle kts: Gradle’s Kotlin DSL provides an alternative syntax to the traditional Groovy DSL with an enhanced editing experience in supported IDEs, with superior content assist.
- Architecture
- Multi-Module Concept: Modularization is a practice of organizing a codebase into loosely coupled and self contained parts. Each part is a module. Each module is independent and serves a clear purpose.
- Decompose: library for breaking down your code into tree-structured lifecycle-aware business logic components (aka BLoC), with routing functionality and pluggable UI
- Koin: Koin provides us with an all-in kotlin library to use it in our shared module to create injections that can be used by both Android and iOS
- Repository Pattern: Repository commonly refers to a storage location, often for safety or preservation.
- Client/Server
- SqlDelight:SQLDelight is a powerful tool for implementing data persistence in Kotlin Multiplatform Mobile (KMM) projects
- Ktor:Ktor includes a multiplatform asynchronous HTTP client, which allows you to make requests and handle responses, extend its functionality with plugins, such as authentication, JSON serialization, and so on.
- Serialization: Kotlin serialization consists of a compiler plugin, that generates visitor code for serializable classes, runtime library with core serialization API and support libraries with various serialization formats.
- Coil: Loading images from network.
Code implementation: realization
Dependencies: gradle
Lib overview: link
- File Picker: Compose file picker for desktop.
Code implementation: realization
Dependencies: gradle
Lib overview: link
- Image Picker: Image picker for Android/Ios.
Code implementation:
Dependencies: gradle
Lib overview: link
- Color Picker: Cross-platform color picker.
Code implementation: realization
Dependencies: gradle
Lib overview: link
- Decompose Navigation: Cross-platform navigation.
Code implementation:
Dependencies: gradle
Lib overview: link
HeyTipsApp is based on the Multi-Module Concept, the MVI architecture and the Repository pattern
The project includes 8 modules where: 1 composeApp, 3 features, 2 core, 1 umbrella, 1 utils.
The feature is to work with tips and contain common ui components. Unit tests included
The feature is to represent app user side
The feature is to represent app admin side