Giter Club home page Giter Club logo

nytimes's Introduction

Project 2 - NyTimes

NyTimes is an android app that allows a user to search for articles on web using simple filters. The app utilizes New York Times Search API.

Time spent: 35 hours spent in total

User Stories

The following required functionality is completed:

  • User can search for news article by specifying a query and launching a search. Search displays a grid of image results from the New York Times Search API.
  • User can click on "settings" which allows selection of advanced search options to filter results
  • User can configure advanced search filters such as:
    • Begin Date (using a date picker)
    • News desk values (Arts, Fashion & Style, Sports)
    • Sort order (oldest or newest)
  • Subsequent searches have any filters applied to the search results
  • User can tap on any article in results to view the contents in an embedded browser.
  • User can scroll down to see more articles. The maximum number of articles is limited by the API search.

The following optional features are implemented:

  • Implements robust error handling, check if internet is available, handle error cases, network failures
  • Used the ActionBar SearchView or custom layout as the query box instead of an EditText
  • User can share an article link to their friends or email it to themselves
  • Replaced Filter Settings Activity with a lightweight modal overlay
  • Improved the user interface and experiment with image assets and/or styling and coloring

The following bonus features are implemented:

The following additional features are implemented:

  • Added home page to see popular articles
  • Articles is home page are horizontally scrollable using RecyclerView
  • Making top stories api call to get top politics, national, sports and fashion articles
  • Replaced actionbar with toolbar
  • Added feature to hide toolbar when the user scrolls down
  • Added search by voice feature
  • Added Snackbar with a retry buton when there is no internet connection
  • Making use of SharedPreferences to persist filter data
  • User can pull-to-refresh
  • Added a slight delay during endless scrolling to avoid getting API rate limiting error

Video Walkthrough

Here's a walkthrough of implemented user stories:

YouTube sendvid

Open-source libraries used

  • OkHttp - An HTTP & HTTP/2 client for Android and Java applications.
  • Retrofit - Type-safe HTTP client for Android and Java by Square, Inc.
  • MaterialDateRangePicker - A material Date Range Picker based on wdullaers MaterialDateTimePicker
  • Material Dialogs - A beautiful, fluid, and customizable dialogs API.
  • Glide - An image loading and caching library for Android focused on smooth scrolling.
  • Parceler - Android Parcelables made easy through code generation.
  • gson - A Java serialization/deserialization library that can convert Java Objects into JSON and back.
  • RetroLambda - A gradle plugin for getting java lambda support in java 6, 7 and android.

License

Copyright [2016] [Sandeep Raveesh]

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.

nytimes's People

Contributors

crsandeep avatar

Stargazers

 avatar  avatar

Watchers

 avatar

nytimes's Issues

Project Feedback!

๐Ÿ‘ Excellent work! A few notes after checking out the assignment:

  • General comment: clean and modularised code, good job on that
  • Properly reused the single base method in search activity to fetch results for both initial load and the pagination
  • Nice to see you added the search box to the Toolbar!
  • Good job using the ConnectivityManager to check for network availability
  • Properly used spinners & check-boxes (with populated values) to allow users to select appropriate values.
  • Properly sent and received relevant filters using a bundle to pass data between activities
  • Good to see you used Parcelable over Serializable (benefits)
  • Good to see you used a filters object Article to represent the filters to apply to the query
  • Good job adding the ability to share a news article.
  • Good job adding progress bars to your app whenever a network request goes out

Also, here's a more detailed Project 2 Feedback Guide here which covers the most common issues with this submitted project. Read through the feedback guide point-by-point to determine how you could improve your submission.

Let us know if you have any other thoughts or questions about this assignment. The next assignment (Twitter Client) will be especially important since it introduces the majority of the remaining pieces necessary to build a fully functional API client with complex feeds of data and user creation.

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.