A modern Android News App built with Jetpack Compose, MVVM & Retrofit.
Real-time news by category with clean UI, pull-to-refresh, and robust error handling.
- ๐ฐ Real-time news updates
- โก Smooth Jetpack Compose UI
- ๐ Pull-to-refresh support
- ๐ Light / Dark mode toggle
- ๐ฑ Tablet compatibility
- ๐จ Error handling for API & network
This app delivers the latest news across multiple categories with a smooth, responsive UI and supports both light & dark mode along with tablet compatibility.
- ๐๏ธ Browse news by categories (Business, Sports, Technology, etc.)
- ๐ซ Splash Screen with App Icon
- ๐ Pull-to-refresh for latest updates
- โก Fast & responsive UI using Jetpack Compose
- ๐ง MVVM architecture for clean and scalable code
- ๐ API integration using Retrofit
- ๐จ Robust error handling (network issues, API limits, invalid responses)
- ๐ Open full articles in browser
- ๐ Light / Dark mode toggle
- ๐ฑ Tablet mode compatibility
- ๐ฏ Minimal, modern UI design
| Layer | Technology |
|---|---|
| UI | Jetpack Compose |
| Architecture | MVVM |
| Networking | Retrofit |
| Async | Kotlin Coroutines |
| State Mgmt | State / MutableState |
| Language | Kotlin |
๐ฆ newspaperapp
โฃ ๐ data
โ โ ๐ NewsRepository.kt
โฃ ๐ ui
โ โฃ ๐ NewsScreen.kt
โ โฃ ๐ NewsItem.kt
โ โ ๐ NewsDetail.kt
โฃ ๐ viewmodel
โ โ ๐ NewsViewModel.kt
โฃ ๐ network
โ โ ๐ RetrofitInstance.kt
โ ๐ MainActivity.ktThis app follows the MVVM (Model-View-ViewModel) architecture with a unidirectional data flow.
flowchart TD
UI[Jetpack Compose UI]
VM[NewsViewModel]
Repo[NewsRepository]
API[Retrofit API Service]
Network[Remote API]
UI -->|User Actions| VM
VM -->|Requests Data| Repo
Repo -->|API Call| API
API -->|HTTP Request| Network
Network -->|JSON Response| API
API -->|Parsed Data| Repo
Repo -->|Articles List| VM
VM -->|UI State Update| UI
-
UI Layer (Compose)
Displays news and sends user interactions (refresh, category change) -
ViewModel (NewsViewModel)
Handles UI state (loading, success, error) and communicates with repository -
Repository (NewsRepository)
Fetches data from API and handles errors -
Network Layer (Retrofit)
Executes HTTP requests and parses responses
flowchart LR
Start[User Action / App Launch]
Loading[Loading State]
Success[Success State - Show Articles]
Error[Error State - Show Message]
Start --> Loading
Loading --> Success
Loading --> Error
๐น App flow in mobile and tablet:
https://youtu.be/TcfplDax_m8?si=K_Gs6e-bRGGRmsd5
Demo Videos:
Sign.Up.mp4
Log-in.mp4
Category-selector.mp4
Home-news-category-page.mp4
news.details.mp4
profile.mp4
about-us-and-update-category.mp4
all-category-news.mp4
update-name-and-password.mp4
landscape.mode.mp4
without.internet.mp4
To run the app with full functionality:
- Get your API key from a news provider (e.g., GNews / NewsAPI)
- Open
local.properties - Add:
NEWS_API_KEY=your_api_key_here- Ensure
BuildConfigis configured to access this key
- API rate limits may apply
- Internet connection required
- Some categories may return empty results depending on region
- API key is required for full functionality
- Implemented clean MVVM architecture
- Managed UI state effectively with Compose
- Handled real-world API failures gracefully
- Built responsive UI supporting multiple screen sizes
- Integrated dark/light theme handling
- ๐ Search functionality
- โค๏ธ Bookmark articles
- ๐๏ธ Room Database integration:
- Offline caching of news
- User authentication (Signup/Login)
- ๐ Push notifications
- ๐ Better personalization & recommendations
Copyright (c) 2026 Kunal
All rights reserved.
Unauthorized use, reproduction, or distribution of this software, in whole or in part, is strictly prohibited without prior written permission from the author.