News Android is a fully functional Android app built entirely with Kotlin and Jetpack Compose. It follows the official architecture guidance and development best practices.
The objective of this repository is to illustrate the application of Clean Architecture principles in Android development. This project serves as a demonstration of best practices in modern Android development. As the industry evolves and new trends emerge, the aim is to continually refine and improve the architectural model to ensure that it remains relevant and effective. Ultimately, the goal is to provide a solid and scalable foundation for building robust, maintainable, and efficient Android applications that can meet the demands of even the most complex business requirements.
Home | Details | Filter |
---|---|---|
![]() |
![]() |
![]() |
Home | Details | Filter |
---|---|---|
![]() |
![]() |
![]() |
The app was designed using Material 3 guidelines.
The Screens and UI elements are built entirely using Jetpack Compose.
The app has two themes:
- Dynamic color - uses colors based on the user's current color theme (if supported)
- Default theme - uses predefined colors when dynamic color is not supported
Each theme also supports dark mode.
The following third-party libraries were used in this project:
- UI wrote in Jetpack Compose Material3 .
- Coroutines and Flow for async operations
- Hilt for dependency injection.
- Retrofit for networking
- Images are shown using Coil.
- Build with Gradle catalog
- Navigation for navigation between screens
- ViewModel that stores exposes, and manages UI state
- Room data persistence library.
- Paging 3 to load partial data on demand reduces the usage of network bandwidth and system resources.
Our goal is to continuously improve and expand upon this project. Here are some of the planned additions for future iterations:
- Implement Unit tests.
- Implement UI tests.
- Apply Detekt for checking code style.
- Use Git Hooks to run Detekt on run pre-commit.
- Use GitHub Actions as CI/CD.
- Use Core-splashscreen to replicate the splash screen behavior from Android 12
- Add Animation to compose layouts.
- Use Benchmark to inspect and monitor the performance.
- Use JankStats to track and analyze performance problems.
- Support Tablet Devices.
News app is designed to provide a seamless and user-friendly experience for reading articles from News API. Key features include:
- Displaying a comprehensive list of news articles
- Efficient loading of data through on-demand loading (Paging), reducing network usage and system resource consumption
- The ability for users to preview article details and read them in full by opening the article URL
- The option for users to filter articles sources (Providers) within the app
- Offline access to previously viewed articles, ensuring that users can access the information they need even without an internet connection
- An attractive and intuitive user interface, including a built-in dark theme for comfortable reading in low-light conditions
News app uses the News API to fetch the articles. To use the API, you will need to obtain a free developer API key. See the News API Documentation for instructions.
Once you have the key, add this line to the gradle.properties
file
API_KEY="your newsapi access key"
Support it by joining stargazers for this repository. โญ