Giter Site home page Giter Site logo

biswajeet-23 / news_planet Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 8.31 MB

A Native Android News app that displays top articles from various news sources using NewsApi and based on MVVM architecture.

Kotlin 100.00%
kotlin mvvm-architecture newsapi-org retrofit room-database jetpack-navigation-component cardview-recyclerview kotlin-coroutine

news_planet's Introduction

GitHub Cards Preview

News Planet

News Planet connects to the News API to retrieve Breaking News Feed based on the particular endpoint used and then displays them as a list.

App Compatibility

Android device running with Android OS 6.0 (API Level 23) or above. Designed for Phones and NOT for Tablets.

Getting Started

  • Register for the Developer API Key from the News API Platform. Registration is free of cost.
  • Create a new package named myApplication.utils in the Project's root folder.
  • Define a property named API_KEY and assign it the value of the API Key obtained from the Registration process.
  • If the above API Key is not defined, then the App will use the default "test" API Key which is heavily rate-limited. Whenever the rate-limit is hit, the app may crash or not display proper results.
  • The Developer API Key is also rate-limited, but not as limited as the default "test" API Key.

Rubric followed for the Project

  • App queries the newsapi.org API to fetch news stories and properly parses the JSON Response.
  • Each List item displayed by the App for the News stories should contain relevant text and information about the story. This includes -
    • Title of the article.
    • Source name of the article if present.
    • Published date and time of the article if present.
  • Default text field remains empty when any of the above parsed information is not available.
  • Networking operations are handled by Retrofit library.
  • Clicking on a story, redirects and opens the story in user's browser.
  • On device rotation
    • The layout remains scrollable.
    • The app saves state and restores the list back to the previously scrolled position.
    • The UI properly adjusts so that all contents of each list item is still visible and not truncated/overlapped.
  • When new News data is fetched, the main screen properly updates the new data.
  • Check whether connected to internet or not. Also, validate for any occurrence of bad server response or lack of response.

Things explored/developed in addition to the above defined Rubric

  • Used RecyclerView in place of ListView (to display the News stories) for its advantages in performance and easy placeholders for custom item decoration.
  • CardView for displaying the News stories content for each News List items.
  • List of libraries used:
  • Custom Fonts for TextViews using Google Fonts.
  • Explored CoordinatorLayout.
  • Used RecyclerView in a SwipeRefreshLayout to use the integrated Progress/Refresh indicator.
  • Vector graphics editing was done using Figma.

Design

Day Mode

Breaking News Page Search News Page Bookmarks Page

Night Mode

Breaking News Page Search News Page Bookmarks Page

Install

news_planet's People

Contributors

biswajeet-23 avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.