A native Android application built with Kotlin, Jetpack Compose, and Clean Architecture using Feature-Driven Development (FDD).
The app consumes data from NewsAPI.org and demonstrates modern Android development practices.
- Branch Bedah Coding (update soon) : Bedah-Code-001
exploration/new-compose-pattern/bedah-code - Build APK (Release) Signing : Google Drive Link : YoNewsAi.apk
- Fetch and display the latest news headlines.
- View detailed information about each news article.
- Built with Jetpack Compose Material3 for modern UI/UX.
- Navigation with Navigation-Compose.
- Hilt for dependency injection.
- Coroutines + Flow for async and reactive data handling.
- Retrofit + Moshi for network calls.
- Coil for image loading.
- Error & loading state handling.
- Dark theme support.
NB: build gradle still not clean need to use lib.version.toml ( Lint Code Analysis )
This project follows Clean Architecture principles with Feature-Driven Development (FDD).
com.yogiveloper.yonewsai
├── core/ # shared utilities, common DI, Result wrapper
├── feature_news/ # main feature module # but i wrap with modules folder
│ ├── data/ # repositories, API service, DTOs
│ ├── domain/ # models, use cases, repository interfaces
│ ├── presentation/
│ │ ├── list/ # NewsListScreen + ViewModel
│ │ └── detail/ # NewsDetailScreen + ViewModel
│ └── di/ # Hilt modules for feature
└── MainActivity.kt # host navigation
- Data Layer →
NewsApiService(Retrofit) →NewsRepositoryImpl. - Domain Layer →
GetTopHeadlinesUseCase(business logic). - Presentation Layer →
NewsListViewModel→NewsListScreen(Compose UI).
| News List |
|---|
![]() |
- Slicing the UI from dribble news mobile
-
- home
-
-
- YoBreakingNews
-
-
-
- Recommendation
-
-
- discover
-
- details
- Shared Element Transition guide
-
- with navigation compose
- News API doesn't provide a
get article by idendpoint, so a simple cache is used for intent details. - bedah code 002
- Kotlin 2.0.21
- Jetpack Compose (Material3)
- Navigation-Compose
- Hilt (DI)
- Retrofit + Moshi
- Coil (image loading)
- Coroutines + Flow
- JUnit, Mockito, Compose UI Test
- Android Studio Koala Feature Drop | 2025
- Gradle 8.5+
- Min SDK 24
- Clone repository:
git clone https://github.com/yogithesymbian/yonewsai-fdd-jetpack-compose.git-
Get an API key from NewsAPI.org.
-
Add the key in
gradle.properties:NEWS_API_KEY=your_api_key_here -
Build & run the project:
./gradlew assembleDebug
-
Unit tests:
GetTopHeadlinesUseCaseTest
-
UI tests:
NewsListScreenTest
Run all tests:
./gradlew test
./gradlew connectedAndroidTestThis project demonstrates:
- Building UI with Jetpack Compose.
- Applying Clean Architecture in an Android app.
- Using FDD (Feature-Driven Development) for modularity.
- Writing unit tests & UI tests in Compose.
To be honest, I mostly use AI to help with development (Ai Assistant) just to make sure my code is still best practice and best approach (check other approach) in this use case. purpose for fast delivery technically testing and just for review technically/knowledge (copy&paste from old code + RnD from ai ui for Jetpack Compose Recommendation Approach) see my professional certification from dicoding:
Practical magic with animations in Jetpack Compose
This project is licensed under the MIT License - see the LICENSE file for details.
Copyright (c) 2025 yogiveloper / yogithesymbian (Yogi Arif Widodo)

