Skip to content

News Application developed using Kotlin and Compose

Notifications You must be signed in to change notification settings

alexymumo/News-App

Repository files navigation

codecov

News-App

  • News App is a multi-module news app built using Kotlin, Jetpack Compose and News API

Table of Contents

Features

  • Display news into different categories ✔️
  • Search trending news ✔️
  • BookMarks ✔️
  • Offline support ✔️
  • Support different languages,Themes 🚧
  • Share News 🚧

Architecture

  • Built using clean architecture

Tech-Stack

  • Kotlin - Modern but already mature programming language aimed to make developers happier. It's concise, safe, interoperable with Java and other languages, and provides many ways to reuse code between multiple platforms for productive programming.
  • Hilt - dependency injection library for Android that reduces the boilerplate of doing manual dependency injection in your project
  • Jetpack Components
    • Jetpack Compose - Modern toolkit for building native UI.
    • Android KTX - Provide concise, idiomatic Kotlin to Jetpack and Android platform APIs.
    • AndroidX - Major improvement to the original Android Support Library, which is no longer maintained.
      • Lifecycle - Perform actions in response to a change in the lifecycle status of another component, such as activities and fragments.
      • ViewModel - Designed to store and manage UI-related data in a lifecycle conscious way. The ViewModel class allows data to survive configuration changes such as screen rotations.
    • Room - Provides an abstraction layer over SQLite used for offline data caching.
    • Navigation Component - Component that allows easier implementation of navigation from simple button clicks to more complex patterns.
    • Paging-Helps load and display pages of data from a larger dataset from local storage or over network
  • Retrofit - Type-safe http client and supports coroutines out of the box.
  • GSON - JSON Parser,used to parse requests on the data layer for Entities and understands Kotlin non-nullable and default parameters.
  • OkHttp-Logging-Interceptor - Logs HTTP request and response data.
  • Coroutines - Library Support for coroutines.
  • Flow - Flows are built on top of coroutines and can provide multiple values. A flow is conceptually a stream of data that can be computed asynchronously.
  • Timber - Library for easier logging.
  • Coil - Image Library from loading images from the database and caching in memory.
  • Coroutines - Library Support for coroutines,provides runBlocking coroutine builder used in tests.
  • Material3 - Design system for compose
  • Maestro - Is the simplest and most effective mobile UI testing framework.
  • Firebase Crashlytics - lightweight, realtime crash reporter that helps you track, prioritize, and fix stability issues that erode your app quality
  • Datastore - data storage solution that allows you to store key-value pairs or typed objects with protocol buffers

Screenshots

Home

Screenshot 2024-04-28 184741 Screenshot 2024-04-28 184830

Search

Screenshot 2024-04-28 185209

BookMarks

Screenshot 2024-04-28 185509

Tests

  • Mockk - Mocking library for Kotlin
  • Truth - Assertion library by google
  • Junit4 - Simple framework to write repeatable tests. It is an instance of the xUnit architecture for unit testing frameworks.
  • Robolectric - Framework that brings fast and reliable unit tests to Android

Demo