Skip to content

Instantly share code, notes, and snippets.

@tejen
Forked from thonydam/iOSCodeChallenge.md
Last active July 24, 2021 01:30
Show Gist options
  • Save tejen/55efbb79fbc9902bdd02b133486c132e to your computer and use it in GitHub Desktop.
Save tejen/55efbb79fbc9902bdd02b133486c132e to your computer and use it in GitHub Desktop.
The Peek iOS Coding Challenge

The Peek iOS Coding Challenge

Goal

Build a small iPhone application that queries Github to get repositories that mention GraphQL. The results are to be displayed in a list view with pagination support. Remember it’s a demo and not a fully featured app! However, we would like to see code that you are proud of and that would you merge into the mainline of your project. Please explain in a README file the choices you made to complete the code challenge and list the things you would have added if you had more time to spend on it.

Services

The application will interface with the Github V4 API

Requirements

Initial launch: fetch the initial set of repos that contain the string graphql Infinite scrolling: Fetch the next set of repository. Error handling Each table cell should contain:

  • The name of the repo
  • The owner login name
  • The owner avatar
  • The number of stars

We are using MVVM at Peek to build iOS apps and we would like you to use it to build this demo app.

Setup

This project uses CocoaPods and leverages the Apollo iOS client to fetch data from a GraphQL API. In order to pull data from Github API, please generate an access token.

The githubToken variable will need to be updated in the GraphQLClientProtocol.swift file.

Libraries

You are allowed to used third party libraries when appropriate. Use your good judgement and please justify the use (when necessary) of any third party library.

Specifications

Language: Swift 5.4 or later Development environment: Xcode 12 or later Target: iOS 13 or later

Submission

When finished, create a public Github repository with your solution. We want your code to represent the best of your abilities. Please also include any documentation or ramblings to help us better understand your submission and the coding choices you made.

Finally, there are plenty of details that are purposefully vague here, because we want to give you leeway to be creative and show us your way of doing things.

Question?

If you have any questions, do not hesitate at all to ask (tony@peek.com).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment