/Neewz

Neewz demonstrates modern Android development with Clean Architecture using Jetpack Compose, Hilt, Coroutines, Flow, Room, ViewModel, and Material Design based on MVVM architecture.

Primary LanguageKotlinApache License 2.0Apache-2.0

Neewz

License API Issues Linkedin

Neewz demonstrates modern Android development with Clean Architecture using Jetpack Compose, Hilt, Coroutines, Flow, Room, ViewModel, and Material Design based on MVVM architecture.

Report Bug · Request Feature

Screenshots

1 2

Tech stack & Open-source libraries

  • Minimum SDK level 26
  • Kotlin based, Coroutines + Flow for asynchronous.
  • Jetpack
    • Compose: Modern toolkit for building native UI
    • Lifecycle: Observe Android lifecycles and handle UI states upon the lifecycle changes.
    • ViewModel: Manages UI-related data holder and lifecycle aware. Allows data to survive configuration changes such as screen rotations.
    • Room: Constructs Database by providing an abstraction layer over SQLite to allow fluent database access.
    • Hilt: for dependency injection.
  • Architecture
    • Clean Architecture
    • MVVM Architecture (Model - View - ViewModel)
    • Repository Pattern
  • Compose Destination: A KSP library that processes annotations and generates code that uses Official Jetpack Compose Navigation under the hood.
  • Retrofit2 & OkHttp3: Construct the REST APIs and paging network data.
  • Sandwich: Construct a lightweight and modern response interface to handle network payload for Android.
  • Moshi: A modern JSON library for Kotlin and Java.
  • ksp: Kotlin Symbol Processing API.
  • Material-Components: Material design components for building ripple animation, and CardView.
  • Landscapist: Image loading library for compose using Glide, Coil, and Fresco.

Getting Started

To set up a local copy of the project and get it runs smoothly on your machine, you can follow these easily accomplished straightforward steps:

Installation

  1. Get a Github Token at NewsApi
  2. Clone the repo
git clone https://github.com/ariastro/Neewz.git
  1. Enter your NewsApi Token in local.properties
NEWS_TOKEN = "YOUR_TOKEN_HERE"
  1. Sync Project and Build Project
  2. Enjoy!

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Why MVVM?

MVVM (Model-View-ViewModel) remains a popular architectural pattern for Android development for several reasons:

  • Separation of Concerns: Separation of concerns is an important principle of software development. It allows you to focus on one aspect of a problem at a time, which makes it easier to reason about complex systems. MVVM helps you separate concerns by keeping your UI code separate from your business logic code.
    • Model (Data): Represents the data and business logic.
    • View (UI): Represents the UI components.
    • ViewModel: Acts as a mediator between the Model and the View. It holds and manages the UI-related data needed by the View and handles user interactions.
  • Maintainability & Testability: The separation of concerns that MVVM provides makes your code simpler to maintain and test. You can replace one piece of code without affecting another.
  • Reusability: ViewModel instances can be more easily reused across different UI components. This is particularly useful in scenarios where the same data or logic needs to be displayed or used in multiple places.

Contact

Ari SWS - ariastronout@gmail.com

Project Link: https://github.com/ariastro/Neewz

Find this repository useful? ❤️

Support it by joining stargazers for this repository. ⭐
Also, follow me on GitHub for my next creations! 🤩

License

Copyright 2023 Ari SWS. All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.