The project demonstrates a Kotlin Multiplatform Mobile app with list-detail views.
Only the Android app currently functions. I will implement the iOS app later.
Open the project in Android Studio 4.1.2, or execute ./gradlew installDebug
from the command line.
Run tests and static analysis with ./gradlew check
. Run espresso tests with
./gradlew connectedCheck
.
The project uses Kotlin Multiplatform Mobile
for the shared
repository layer of the app. This layer users Ktor
for networking and SQLDelight to cache
responses in a database.
The Android app is built using MVI with the Orbit MVI library that I co-authored.
Dependency injection is setup using Dagger Hilt.
Views use RecyclerViews and Groupie to help build reusable shared components configured to match a design system.
Animations have been implemented through AnimatedVectorDrawable created using Shape Shifter and MotionLayout.
ViewModels logic tests use the Orbit Unit Testing module, which allows testing the interactions in isolation.
The network layer has an integration test to verify the contract with the backend.
-
Implement iOS application
-
Investigate MotionLayoutSavedStateViewModel for memory leaks, potentially using lifecycle aware components for binding
-
Additional testing
- Implement screenshot/interaction tests once Orbit MVI has support
-
Setup CI
- GitHub Actions
- Tags to upload APK to GitHub
- codecov.io
-
Add additional content
- Education section
- Medium blog posts
- Conference talks
- Open-source software
-
Migrate to Jetpack Compose
-
The app currently doesn't log any data or exceptions, and could potentially use Timber.