Carousell News is an Android application designed to deliver the latest news with a clean and modern user interface. This project leverages a multi-module architecture to ensure scalability and maintainability.
- Gradle Conventions: Utilizes Gradle conventions for easier extension and minimal duplication in a multi-module architecture.
- UI: Built using Jetpack Compose for a modern and responsive user interface.
- Networking: Implements Ktorfit and Ktor for efficient network operations.
- Dependency Injection: Uses Dagger Hilt for dependency injection.
- Lifecycle Management: Integrates Jetpack Lifecycle components.
- Architecture: Follows the MVI pattern in ViewModel and clean architecture principles for package separation.
- Mockk, Turbine, & Kotest: Use mockk, turbine, and kotest as modern test framework
Notes: for kotest we need to install kotest plugin to recognize test files.
The project is organized into the following modules:
- app: The main application module that ties everything together.
- convention: Contains Gradle conventions for easier extension and minimal duplication across modules.
- core: Houses core functionalities shared across different layers (data, domain, presentation). This includes core HTTP client configurations for Ktorfit & Ktor, Compose themes, and other shared utilities.
- feature:news: The main feature module responsible for the news functionality.
- Android Studio Koala Patch 2
- Kotlin 2.0
- Gradle 8.10
- Java 21
- Clone the repository:
git clone https://github.com/JosephSanjaya/carousell-news.git
- Open the project in Android Studio.
- Sync the project with Gradle files.
You can build the app manually from Android Studio after fulfilling the prerequisites:
- Connect an Android device or start an emulator.
- Click on the "Run" button in Android Studio.
For a faster approach, you can trigger the Android CI/CD job from the GitHub Actions section:
- Go to the GitHub repository.
- Navigate to the "Actions" tab.
- Select the "Android CI/CD" workflow.
- Click on "Run workflow" to trigger the build process.
- Get apk from artifact section