Giter Club home page Giter Club logo

ios-tech-challenge's Introduction

iOS Tech Challenge: What to eat (Proposed solution).

(For the challenge description see bellow)

This repository fork contains the changes implementing the challenge App. These are the highlights of this work:

  • An MVP pattern was used to decouple the view from the model.
  • The 'View' project folder groups the controllers (two of them) on other supporting views used in the solution
  • In the 'Model' folder are the entities and services which are used to access the Flikr endpoints.
  • The 'Presenter' folder contain the classes that respond to user actions, they are decoupled from the controllers and view thru protocols, so this layer (along with the Model) can be reused by other projects
  • The App target only uses two Swift classes, the Flikr service and it's suporting http utility. The rest of the project are Objective-C classes.
  • There is a unit testing target written in Swift (for productivity), within it there are two XCTestCases, one which test the Flikr service and other which test one of the presenters (partially)
  • For a quick look Check the resources folder for a screen recording of the App.

Instead of adding more features I decided to focus on making the App scalable and testable, I hope this final result will show it.

iOS Tech Challenge: What to eat.

Welcome to the Orderbird Tech Challenge :-).

"What to eat" is an app that helps you find some food on days where you are doubting what to bring to your stomach.

It has a simple table view, which fetches images from flickr API service, and populates a title and description label in the UI. Unfortunately one of our developers had introduced some bugs by accident and we hope that you can help to find and fix them.

Bug Fixes: First task would be to implement some bug fixes some of which are minor UI cosmetics and some which may be of a more serious nature and impact performance. We also noticed that the text within the cells seems to be truncated, would be nice to have this fixed also.

New Feature requirements: We would like you to add the ability to present a detail view of a tapped image cell to display a bigger more detailed image from the API with more details and text. Ideally this would envolve pushing to a new ViewController.

We also think that it would be nice to have the ability to sort the images by Date, perhaps this could displayed in a UISegmentedControl or have some toggle component.

Finally a re-write of the Networking layer in Swift 4 (or latest) would be required & add unit tests for the new module.

Some guidelines:

  • Showcase your abilities, and use the task to demonstrate your idea of best practices, regarding coding style, project structure, patterns, design, etc.
  • Don't use third party libraries.
  • please do not rewrite the app completely in SWIFT ;-) (as we are more curious on how you work with the objective C codebase)
  • There is no right or wrong solution, as long as it is your solution.
  • If you only have time to do one thing please do it as good as you possible can. It is better to have a nice but incomplete solution rather than a mediocre "feature complete" one. We want to get a good impression of your abilities.
  • Be prepared to describe your work in detail.
  • Flickr photo search: https://www.flickr.com/services/api/flickr.photos.search.html

ios-tech-challenge's People

Contributors

omargomez avatar nanosuarez avatar sebastiannachtigall avatar

Watchers

James Cloos 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.