Git Product home page Git Product logo

getyourguide-hometest's Introduction

GetYourGuide HomeTest

Application developed for an application to Senior iOS Engineer position at GetYourGuide.

It's basically a list of reviews for one of our most popular Berlin tours, it has paging feature include, so once the user reaches the bottom of the screen, it will add a loading indicator at bottom and then load more data.

Requirements:

  • Xcode 10.3;
  • iOS 12.4;
  • Swift 5;
  • Cocoapods (as the project only have one small dependency, I've commited it to the repository, so you should be able to run the project without having Cocoapods to install the dependency);

Installation:

  • Open the project directory;
  • Run pod install to install the dependency via Cocoapods (it should not be necessary as the /Pods folder is commited to the repository;
  • Open the GetYourGuide.xcworkspace file to be able to run the project;

Third-party libraries:

  • Kingfisher - Framework written in pure-Swift code for downloading and caching images from the web (I used this to load the profile images from reviewers, the ones that have a profile image);

Architecture:

Base files:

The generic files that could be exported into a framework or used by another app without any changes.

  • Networking folder - has the networking classes;
  • Extensions folder - has the extension classes used around the app;

App level files:

The files that are dedicated to perform the actions and receive the specific data for GetYourGuide Reviews app.

  • Constants - has the constants files to be used on the app;
  • NetworkRequests - has the specific network request for each API call, created conforming to the RequestProtocol;
  • Models folder - has the models for the data gotten from the webservices;
  • Assets folder - has the default assets folder from Xcode and the storyboards (ideally separated into folders);
  • Reviews folder - has the components for that specific feature inside the app;
    • Cells - has the .xib and .swift files for the collection/table view cells needed by the feature;
    • ViewModels - has the view model files for that feature (the view models here are used to instantiate the requester and get the pertinent data, prepare the data and return the data ready to be used by the logic controller);
    • LogicControllers - has the logic controller files (the logic controller contains all the logic to display the data to the user where desired, e.g inside a collection view);
    • ViewControllers - has the view controller files (the view controller is responsible to handle the actions, navigation and updates to the view);

Unit tests:

  • I added some unit tests to the project, they are under the GetYourGuideTests folder and separated into folders related to their function or architecture.

getyourguide-hometest's People

Contributors

leonardo-ferreira07 avatar

Stargazers

 avatar

Watchers

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