An Android application built with Kotlin and following clean architecture principles, leveraging best practices such as a multi-layered architecture (data, domain, presentation), MVVM, and Dependency Injection with Hilt.
The app consumes the Rick and Morty API, displaying characters with pagination, offline caching, and a favorites management system — all implemented with a focus on scalability, testability, and maintainability.
- 📄 Character listing with automatic pagination using Paging 3.
- 🔄 Offline cache support powered by Room and
RemoteMediator
. - ❤️ Favorites screen to view only favorited characters.
- 🎨 Modern Jetpack Compose UI with Material 3.
- ⚡ Optimized image loading using Coil.
- ✅ Dependency injection and state management with Hilt.
app/
├── data/ # Data layer: API services, Room database, DAOs, RemoteMediator
│ ├── local/ # Local persistence (Room entities, DAOs)
│ ├── remote/ # Network layer (Retrofit services, DTOs)
│ └── repository/ # Repository implementations combining local and remote data
│
├── domain/ # Domain layer: models and repository interfaces
│
├── features/ # Feature-based UI modules/screens
│ ├── home/ # Home screen
│ ├── favorites/ # Favorites screen
│ └── details/ # Character details screen (future)
│
├── di/ # Dependency Injection setup using Hilt
│
├── utils/ # Utility classes, extensions, and helpers
│
└── MainActivity.kt # Application entry point
- Pagination with Paging 3
- Offline caching
- Favorites feature
- Character detail screen
- Unit and UI tests
- CI/CD with GitHub Actions