An Android app built with Jetpack Compose and the latest android libraries.
- Modern Architecture: Clean Architecture (Data, Domain, Presentation layers) coupled with MVVM.
- UI Toolkit: 100% Jetpack Compose.
- Dependency Injection: Dagger Hilt for robust dependency management.
- Networking: Retrofit2 for fetching data from the news API.
- Pagination: Paging 3 integration for seamless scrolling and loading of news articles.
- Local Storage:
- Room Database for bookmarking and saving favorite news articles.
- Preferences DataStore for managing onboarding states and local user preferences.
- Navigation: Jetpack Compose Navigation for fluid transitions between screens (Onboarding, Home, Search, Bookmark, Details).
- Image Loading: Coil for efficient remote image fetching and rendering.
- Splash Screen: AndroidX Splash Screen API for a polished startup experience.
- UI Enhancements:
- Shimmer effects during data loading.
- Accompanist System UI Controller for customizing the system bars.
app/src/main/java/com/loc/newsapp/
├── data/ # Data Layer (Network, Local Database, Repository Implementations)
│ ├── di/ # Dependency Injection modules (AppModule)
│ ├── local/ # Room Database (Dao, Database, TypeConverters)
│ ├── manager/ # Implementations of managers (e.g., LocalUserManager)
│ ├── remote/ # Retrofit API, PagingSources, DTOs
│ └── repository/ # Repository pattern implementations
├── domain/ # Domain Layer (Models, Repositories, Use Cases)
│ ├── manager/ # Interfaces for DataStore/local managers
│ ├── model/ # Core data models (Article, Source)
│ ├── repository/ # Repository interfaces
│ └── usecases/ # Encapsulated business logic (e.g., GetNews, SaveAppEntry)
├── presentation/ # Presentation Layer (UI, ViewModels, States, Events)
│ ├── bookmark/ # Bookmark Screen
│ ├── common/ # Reusable Compose UI components (ArticleCard, SearchBar, ShimmerEffect)
│ ├── details/ # Details Screen for individual articles
│ ├── home/ # Home Screen showing paged news
│ ├── navgraph/ # Compose Navigation configuration and routes
│ ├── news_navigator/ # Main container handling BottomNavigation
│ ├── onboarding/ # Onboarding flow for first-time users
│ └── search/ # Search Screen for querying news
├── ui/theme/ # Compose Themes, Colors, and Typography
├── util/ # Utilities and Constants
├── MainActivity.kt # Single-Activity entry point
└── NewsApplication.kt # Application class for Hilt initialization
Credits: This app was built by following a comprehensive tutorial. I am not the original creator of this project. All proper credits for the original concept, design, and tutorial go to the actual owner.
To learn how to build this app from scratch, you can watch their original playlist on YouTube: https://www.youtube.com/playlist?list=PLzZEuVaFb9Exi-pc8qtHBrrLg8bUn-TP6





