Minimal & Efficient news app that fetches news from newsapi.org. Built with Clean Architecture driven use cases and best practices.
- Modern UI: Built with Jetpack Compose.
- Dependency Injection: Powered by Dagger Hilt.
- Navigation: Seamless navigation with Compose Navigation.
- User Preferences: Managed with Preferences Datastore.
- Onboarding Flow: User-friendly onboarding experience.
- Data Storage: RoomDB for efficient disk caching.
- Network Requests: Retrofit for reliable network communication.
This project follows the principles of Clean Architecture, which ensures separation of concerns and scalability. The architecture is divided into several layers:
- Presentation Layer: Contains UI components and state management.
- Domain Layer: Contains use cases and business logic.
- Data Layer: Responsible for data management, including repository pattern implementation.
- Jetpack Compose: Modern toolkit for building native UI.
- Compose Splash API: For a smooth splash screen experience.
- Dagger Hilt: Dependency Injection framework.
- Compose Navigation: For handling navigation in a Compose world.
- Preferences Datastore: Jetpack's datastore for storing user preferences.
- RoomDB: Database for offline caching.
- Retrofit: Type-safe HTTP client for Android and Java.
-
Clone the repository:
git clone https://github.com/xidsyed/NewsBasket.git
-
Navigate to the project directory:
cd NewsBasket
-
Open the project in Android Studio.
-
Add your
newsapi.org
API key to thelocal.properties
file:NEWS_API_KEY=your_api_key_here
-
Build and run the app.
- Onboarding: The app guides new users through an onboarding flow to personalize their experience.
- News Feed: Browse the latest news articles fetched from newsapi.org.
- Favorites: Save favorite articles for later reading.
- Settings: Customize user preferences and app settings.
Contributions are welcome! Please follow these steps:
- Fork the repository.
- Create a new branch:
git checkout -b feature/your-feature-name
- Make your changes and commit them:
git commit -m 'Add some feature'
- Push to the branch:
git push origin feature/your-feature-name
- Open a pull request.
This project is licensed under the MIT License. See the LICENSE file for more details.
Feel free to open issues or submit feature requests. Happy coding!