Skip to content

Latest commit

 

History

History
106 lines (75 loc) · 3.15 KB

README.md

File metadata and controls

106 lines (75 loc) · 3.15 KB

Minimal & Efficient news app that fetches news from newsapi.org. Built with Clean Architecture driven use cases and best practices.

Features

  • 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.

Table of Contents

Screenshots

Architecture

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.

Tech Stack

  • 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.

Setup

  1. Clone the repository:

    git clone https://github.com/xidsyed/NewsBasket.git
  2. Navigate to the project directory:

    cd NewsBasket
  3. Open the project in Android Studio.

  4. Add your newsapi.org API key to the local.properties file:

    NEWS_API_KEY=your_api_key_here
  5. Build and run the app.

Usage

  • 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.

Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository.
  2. Create a new branch:
    git checkout -b feature/your-feature-name
  3. Make your changes and commit them:
    git commit -m 'Add some feature'
  4. Push to the branch:
    git push origin feature/your-feature-name
  5. Open a pull request.

License

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!