The one and only Android application that displays the countries from the REST Countries public API.


- π Separated Gradle subprojects for each data layer
- π Dependency Injection through Koin
- π Async calls and Reactive Flows through Kotlinx Coroutines
- π Remote fetching from the REST API through Ktor Client
- π Data serialization through Kotlinx Serialization
- π Caching on a local database with AndroidX Room
- π¦ Different data layer handling through Store
- π¨ UI implemented using Jetpack Compose, with a separated Design System module
- βοΈ Network errors clearly propagated through layers and displayed to the user
- πΈ Screenshot testing with Paparazzi
- βοΈ Unit tests using:
- π¦Ύ Instrumented tests
- π§© Shared build logic between subprojects through convention plugins
- Enhance
README.md
with device screenshots - Create more instrumented tests
- Work on Compose performance optimizations
- Migrate
:data:repository
layer to Store - Delete orphan columns from
language
,continent
,currency
,capital
tables by creating a database trigger - Move common modules to Kotlin Multiplatform
- Create iOS application & UI implementation with SwiftUI
- Validate external libraries licenses through Licensee
- Create a proper CD pipeline
- Chris Banes, with his tivi.app: his project not only taught me during the years about the Android development, but also shaped me as a developer in a general way
- Although I never participated to this event, the DroidKaigi conference applications helped me during the early stages of my journey, and I am deeply grateful for the hard work the team is putting every year
- Now in Android: A fully functional Android app built entirely with Kotlin and Jetpack Compose
- All the contributors of the mentioned libraries
- REST Countries API contributors