Coder Social home page Coder Social logo

flickerapp's Introduction

FlickrApp

Flickr app searches for images using Flickr API based on user's input and displays the images on home screen with endless scrolling. On selecting each photo the app will take the user to the next screen which show the selected image. User can even zoom in/out the image upto 5x. The app even maintains the search history and shows all the recent searches in a list.

Features

  • FlickerApp provides the user the option to search the images based on the input provided in the search box. User gets list of images on Home screen.
  • User can see the photos in a separate screen by selecting each image from the list.
  • User will be able to Zoom in/out the images upto 5x.
  • The app stores the user's search histroy and shows the list of searched string under Search history tab.
  • App supports light mode.
  • App supports portrait mode.
  • App has been localized for english and can be extended to support other language.
  • The app supports searches in online mode, whereas user can see the search histroy even in offline mode.
  • App supports iOS version 13.x and above. Tested on iPhone 11, iPhoneX, iPhone6s with iOS version 13.4 and iOS 14.0.

Notes

  • FlickerApp app gets list of all images from flicker search API.
  • The app will show an error popup "There seems to be some problem. Please try after sometime" in case of any error ocurred during the API call.
  • The app is using lazy loading to download the Images which gives smoother UI experience to the user.

Sample Screens

Prerequisites

You would need a macbook with XCode 11.x installed. I built the app with XCode 11.2.1

User Guide to use the app

  • On Launch, Search screen is shown on screen which consists of Search bar at the top and two tab items Search and Search Histrory at the bottom.
  • User can type any string (E.g.- Amsterdam, Paris etc) inside the search box and on tapping Enter/Search will show the list of images on the home screen with 2 cloumns.
  • On tapping any image, Enlarged image is shown on next screen with with the photo and user can zoom in/out upto 5x.
  • On tapping the Serach history tab, it will show the list of searched string in 'most recent at the top' manner.

Technical Details

Third Party

  • No third party library is used.

App Architecture

  • VIPER Architecture is used in the app.
  • Network layer is based on protocol oriented design.

Language

  • Swift language has been used.

Code Structure

Code is divided into following Groups

  • APP group contains the xcode auto generated AppDelegate and custom class Appcoordinator.
  • Tabbar group contains the TabBarCoordinator which creates tabbar for the app.
  • Datamanager group contains the file which are responsible for persistance.
  • Utlities contains AlertService protocol, Extension, Helper, Screens, Reachability, Coordinator Protocols, Constants. This code is reusable generic code used through out the app.
  • Networking group contains all the files related to network layer. It contains sub groups of Reachability, NetworkHandler, NetworkRouting, HTTPHandlers, EndPoints and Services.
  • Search group contains the Photo model and SearchHistroy contains SearchHistory model, which being used in the app.
  • Search, PhotoDetails and SearchHistory group contains the modules with their respective view, Collection view cells, Presenter, Interactor, Coordinator, Entity.
  • SearchView subgroup contains SearchView for main Home screen view.
  • SearchHistory subgroup contains SearchHistory for showing the list of recently searched strings. -PhotoDetail subgroup contains PhotoDetail for showing the selected photo.

Unit Tests

  • Unit test are written and provide a code coverage of 81.9 percent. see the screenshot attached. Code Coverage

Unit tests are arranged in two subgroups:

  • Search contains tests written on View, Presenter, Interactor, Coordinator
  • SearchDetail contains tests written on Presenter, Coordinator, View
  • SearchHistory contains tests written on Presenter, Coordinator, View
  • Network subgroup contains tests written on Network Services
  • Utility subgroup contains tests written on utility services
  • Mock subgroup contains mock-up classes of Search module.

Built With

  • XCode 11.2.1
  • Tested on iPhone 8. (iOS 13.1.3)

flickerapp's People

Contributors

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