A sample Android app built with Kotlin
& Jetpack Compose
, showcasing clean architecture principles and modern Android development best practices.
This app provides a delightful experience for fans of the Rick & Morty universe. 🤓
- Dashboard: Explore a comprehensive list of Rick & Morty characters.
- Character Details: Dive deep into character information, including full name, status, species, gender, origin, current location, and a list of episodes they've appeared in.
- Episode Details: Learn more about each episode, including its name, season, air date, and the featured characters.
- Location Details: Discover details about various locations in the Rick & Morty universe, such as name, type, dimension, and a list of residents.
This app follows a clean architecture approach, promoting maintainability, testability, and scalability. The core components are organized into distinct layers:
- Presentation Layer (UI): Built with Jetpack Compose, responsible for displaying data and handling user interactions. Utilizes the MVVM (Model-View-ViewModel) pattern.
- Domain Layer (Use Cases): Contains the business logic of the application, independent of any specific implementation details. Use cases orchestrate data flow between the data and presentation layers.
- Data Layer (Repositories): Provides an abstraction for data access, retrieving data from various sources (e.g., network, database). Implements the Repository pattern.
- Data Source Layer: Handles the specifics of data retrieval, including network requests (using Ktor) and local database operations (using Room).
This project leverages the following technologies:
- Languages: Kotlin
- UI: Jetpack Compose - A modern toolkit for building native Android UI.
- Architecture: MVVM (Model-View-ViewModel) - A robust architecture pattern for separating concerns.
- Asynchronous Operations: Kotlin Coroutines & Kotlin Flows - For handling background tasks and reactive streams.
- Networking: Ktor - A lightweight and multiplatform HTTP client.
- Dependency Injection: Koin - A pragmatic dependency injection framework.
- Image Loading: Coil - An image loading library backed by Kotlin Coroutines.
- Local Persistence: Room - A persistence library providing an abstraction over SQLite.
- Data Serialization: Gson - A Java library that can be used to convert Java Objects into their JSON representation and vice-versa.
- Build: Kotlin DSL - Using Kotlin for Gradle build scripts.
- Custom Gradle Plugins: Enhancing the build process with custom plugins. (See details below)
- Testing: Mockk - A mocking library for Kotlin.
Contributions are welcome! You may suggest a new feature, point out a bug or even open a PR 🚀