Take home assignment for an iOS developer role interview process.

Overview

Cocktails

My solution to a take home assignment I was given as a step of an interview process for an iOS developer role.

The task

I was asked to write a simple application to display cocktail recipes from a database, using two different API endpoints. The application was to have two screens: One main screen built with UIKit, showing a list of the cocktails with the name and associated image for each one. One details screen built with SwiftUI, showing the details of the selected cocktail. Must include image, name, glassware, instructions and ingredients with measurements.

Requirements:

  • One week to finish
  • No 3rd party frameworks
  • Deployment target iOS 15
  • They must be able to build and run the project with the lates stabel version of Xcode

Example API responses:

/cocktails/
[ 
    {
        "id": "12560",
        "name": "Afterglow",
        "imageUrl": "https://www.thecocktaildb.com/images/media/drink/vuquyv1468876052.jpg"
    }, 
    {
        "id": "12562",
        "name": "Alice Cocktail",
        "imageUrl": "https://www.thecocktaildb.com/images/media/drink/qyqtpv1468876144.jpg"
    }, 
    {
        "id": "12862",
        "name": "Aloha Fruit punch",
        "imageUrl": "https://www.thecocktaildb.com/images/media/drink/wsyvrt1468876267.jpg"
    } 
]
/cocktails/{cocktail-id}
{
    "id": "12560",
    "name": "Afterglow",
    "imageUrl": "https://www.thecocktaildb.com/images/media/drink/vuquyv1468876052.jpg",
    "glass": "Highball Glass",
    "instructions": "Mix. Serve over ice.",
    "ingredients": [
        {
            "name": "Grenadine",
            "measure": "1 part "
        }, 
        {
            "name": "Orange juice",
            "measure": "4 parts "
        },
        {
            "name": "Pineapple juice",
            "measure": "4 parts "
        } 
    ]
}

I was asked to explain my decisions in a README file, this is what I wrote

I chose to use MVC architecture for the UIKit part and MVVM architecture for the SwiftUI part. I prefer MVVM but have not used it with UIKit before. If I were to use MVVM with UIKit I would probably leverage the Combine framework.

The network layer is one I built for a project I'm currently working on. I used it both to show you I can make a more complex, abstracted network layer and to save time.

My strategy was to start with the basic functionality - make sure I could load the cocktails, make the list screen and detail views. After that I added to and iterated on the code with the time I had left of the estimated 4 hours.

You might also like...
C-41 is an application to help people develop film at home by providing a series of
C-41 is an application to help people develop film at home by providing a series of "recipes" for photographers to use

C-41 C-41 is an application to help people develop film at home by providing a series of "recipes" for photographers to use. The app demonstrates how

Apple Developer Academy @ POSTECH Afternoon Session Team 13 MC2
Apple Developer Academy @ POSTECH Afternoon Session Team 13 MC2

๐Ÿ“ฑ Project Title A brief description of what this project does and who it's for ๐Ÿ“Œ Features Light/dark mode toggle Live previews Fullscreen mode Cross

iOS's Stocks App clone written in React Native for demo purpose (available both iOS and Android).
iOS's Stocks App clone written in React Native for demo purpose (available both iOS and Android).

FinanceReactNative iOS's Stocks App clone written in React Native for demo purpose (available both iOS and Android). Data is pulled from Yahoo Finance

Project 03 I created for
Project 03 I created for "iOS & Swift - The Complete iOS App Development Bootcamp"

Dicee This is the third project I created for "iOS & Swift - The Complete iOS App Development Bootcamp" Our Goal The objective of this tutorial is to

IOS-Prework - CodePath intro to iOS prework.
IOS-Prework - CodePath intro to iOS prework.

Hello World App Submitted by: Emmanuel Assumang Time spent: 1.5 hours spent in total App Description This is a simple mobile app programmed in Swift t

Google-Blogger-iOS-App - Using Google Blogger API to build an iOS app like Medium

Google Blogger iOS App Using Google Blogger API to build an iOS app like Medium๏ผ

Ios jetpack - A codabase for iOS projects foundations

iOSJetpack A codabase for iOS projects foundations Neworking Data Reusable Proto

A native iOS UI widget for adding Spokestack to any iOS app.
A native iOS UI widget for adding Spokestack to any iOS app.

A native iOS library for adding Spokestack to any iOS app. Installation Edit Podfile CocoaPods is a dependency manager for Cocoa projects. For usage a

Owner
Johan Forsell
Grade school teacher turned iOS developer. Currently looking for my first professional iOS developer role.
Johan Forsell
Swift Interview Problems in Playground

SwiftInterviewProblems Two Parts -- Swift Playgrounds & Read Me Swift Interview Problems in Playground you may have to copy and paste the code into a

Zachary Smith 43 Jan 2, 2023
Underdog Devs Technical Interview Prep

Underdog Devs Technical Interview Prep The purpose of this repo is to provide a structured approach to preparing for entry-level software developer in

Dan Morse 9 Jun 9, 2022
It can help you to prepare yourself for interview ๐Ÿš€

Note I will keep updating the content table as I am going through, keep connected to stay updated ! Contribution You can contribute here as well, crea

Mohammad Yasir 4 Mar 21, 2022
Swift interview preparation, with questions and answers, cheat sheets, examples...

Swift-Interview Hello every one, in this repo I'm preparing for my swift thecnical question, so you'll find examples and frequently asked questions ab

JoJo 22 Aug 21, 2022
Soltia Assignment with swift

#Soltia Assignment. This repository will be public for 72 hours after submitting the task by email in order to respect the effort done and to avoid ot

null 0 Oct 30, 2021
Home Assistant Native iOS Application built with SwiftUI for iOS 15+

Home Assistant - Native iOS SwiftUI Application Screenshots Disclaimer - Please read This application is mostly a not-working mockup written in SwiftU

Alessio Santoru 34 Dec 13, 2022
Be happy, take a happic: ๐Ÿ“ธ

happic: ํ•˜๋ฃจ ํ•œ ์ปท์˜ ์‚ฌ์ง„๊ณผ ํ‚ค์›Œ๋“œ ๋ถ„์„์ด ์•Œ๋ ค์ฃผ๋Š” ๋‚˜์˜ ํ–‰๋ณต, ํ•ดํ”ฝ 30th THE SOPT APP JAM ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„ : 2021.07.02 ~ 2021.07.23 Team happic iOS Developers ์ด์„ธ์ง„ ์œค์ˆ˜๋นˆ ๊ฐ•์Šนํ˜„ lsj8706 devx

Team-happic: 14 Nov 26, 2022
Storm: iOS home task project

iOS home task project About this repository This repository contains brand new iOS project with Storyboards removed and ready to write the UI programa

Storm Ideas 0 Nov 23, 2021
Home Assistant for Apple Platforms

Home Assistant for Apple Platforms Getting Started Home Assistant uses Bundler, Homebrew and Cocoapods to manage build dependencies. You'll need Xcode

null 0 Nov 23, 2021
A developer-focused Meetup clone built with React Native

Assemblies Where Developers Connect Assemblies is an open-source mobile app built with React Native which developers can use to connect through 'assem

Build React Native 360 Dec 7, 2022