This is the take home project from Lululemon for the role of Sr. iOS Software Engineer

Last update: Jun 15, 2022

Lululemon-Assessment

The project has been completed. Please check below sections for more details :)

Challenge

Designs

Build two screens as shown above.

  • The first screen shows a list of garment names and buttons to order the list by alphabetical order or by creation date/time.
  • A “+” button at the top right corner presents the second screen as a modal view.
  • The second screen allows saving a new garment in persistent memory, using the database of your choice. Tapping the “Save” button closes the modal view and returns to the first screen with the list. The list then shows the newly added garment.

unit test some of the code

Assumptions

Ideally, I would clarify these requirements with Product Owner but I made these assumptions while implementing the project

  • We allow duplicate garment names
  • Uppercase and lowercase does not impact alphabetical order of garments
  • We can't tap on existing garments to edit or delete garment

Architecture

MVC

I'm using MVC design pattern and please check the above image to understand how different units of the code are interacting. I used various techniques such as dependancy injection, logic controllers, model controllers, and many others to ensure that different units of the codebase are loosely coupled and have an overall modular design.

The above artitecture does not cover small units like GarmentsListOrder and StorageProtocol but it should give a good idea. You can check the draw.io diagram at https://drive.google.com/file/d/1Wc6uqTfI_9wK1pkGfYhASp-ULXBRbJhb/view?usp=sharing

Demo

Here is a screen recording of the app: https://youtube.com/shorts/55hRQjnfvJg?feature=share

Additional Features

  • Support light/dark mode
  • Supports landscape/portrait orientation
  • Supports iPhone/iPad

Testing

I followed Test Driven Development while making this project. Please check Lululemon AssessmentTests folder to find the unit test cases I have written. I followed Arange, Act, Assert pattern for writing test cases.

Improvements

I have left various comments noting some of the techincal debt in the project. Please check the individual comments for more information.

GitHub

https://github.com/amoghjos/Lululemon-Assessment
You might also like...

Base project for Devpass' Dev Sprints

Base project for Devpass' Dev Sprints

MVVM Challenge - Chuck Norris App 💪 In this challenge, we will apply MVVM architecture concepts to finalize the implementation of an iOS application.

May 19, 2022

This is an iOS Safari Extension Sample that adds a "Develop menu" to Safari on iOS to allow you to analyze websites.

Develop Menu for Mobile Safari This is an iOS Safari Extension that adds a "Develop menu" to Safari on iOS to allow you to analyze websites. This is a

Jun 16, 2022

List of awesome iOS & Swift stuff!!

List of awesome iOS & Swift stuff!!

Awesome iOS Developer Feel free to fork this repository and pull requests!! 🔎 Content Coding Convention Swift Lint Design Pattern Adaptor Delegation

Jun 23, 2022

An assignment for ios Dev intern position

An assignment for ios Dev intern position

iOS Assignment An assignment for ios Dev intern position Design Process A UI design for the project is made in FIGMA. Link here Figma Sneek Peek Descr

Apr 28, 2022

SwiftUI iOS component for Step Indications.

SwiftUI iOS component for Step Indications.

StepperView SwiftUI iOS component for Step Indications Table of Contents Features Documentation Installation CocoaPods Carthage Swift Package Manager

Jun 27, 2022

Mini-application iOS native avec Xcode et Swift exploitant l'architecture MVVM et le framework Combine d'Apple pour la mise en place de la programmation réactive fonctionnelle, le tout avec UIKit.

Mini-application iOS native avec Xcode et Swift exploitant l'architecture MVVM et le framework Combine d'Apple pour la mise en place de la programmation réactive fonctionnelle, le tout avec UIKit.

iOS (Swift 5): Test MVVM avec Combine et UIKit L'architecture MVVM et la programmation réactive fonctionnelle sont très utlisées dans le développement

Nov 28, 2021

iOS native app demo with Xcode and Swift using MVVM architecture and Apple's Combine framework for functional reactive programming, all with UIKit

iOS native app demo with Xcode and Swift using MVVM architecture and Apple's Combine framework for functional reactive programming, all with UIKit

iOS (Swift 5): MVVM test with Combine and UIKit MVVM and functional reactive programming (FRP) are very used in iOS development inside companies. Here

Dec 31, 2021

Create a simple MVVM-C iOS architecture with Swift for starters

iOS-Architecture-MVVM MVVM+Coordinators IOS Architecture Tutorial By Bobby Pehtr

Dec 30, 2021

This library is a UIView that is capable of Picture-in-Picture (PiP) in iOS.

This library is a UIView that is capable of Picture-in-Picture (PiP) in iOS.

日本語 UIPiPView This library is a UIView that is capable of Picture-in-Picture (PiP) in iOS. Using this library, information that is updated in real

Jun 12, 2022
Related tags
USC's ITP342 iOS Development Swift Final Project

READMEBlogs USC's ITP342 iOS Development Swift Final Project NOTE: You'll need to attach your own Firebase to the app LINK TO APP ZIP FILE: https://dr

Dec 8, 2021
USC's ITP342 iOS Development Swift Final Project

READMEBlogs USC's ITP342 iOS Development Swift Final Project NOTE: You'll need to attach your own Firebase to the app LINK TO APP ZIP FILE: https://dr

Dec 8, 2021
A self-taught project to learn Swift.
A self-taught project to learn Swift.

30 Days of Swift Hi Community I am Allen Wang, a product designer and currently learning Swift. This project was totally inspired by Sam Lu's 100 Days

Jun 16, 2022
The first HackingWithSwift project from the 100 Days of Swift series.

StormViwer A gallery to display images included in the app's internal assets folder. This is my first ever swift project and it is a part of the serie

Nov 9, 2021
Final project of Introduction to Swift course

Final project of Introduction to Swift course This project summarizes the concepts viewed on class, from simple variable creations, loops and conditio

Dec 12, 2021
A sample project exploring MVVM pattern with SwiftUI/Combine, using Unsplash API (via Picsum.photos API)
A sample project exploring MVVM pattern with SwiftUI/Combine, using Unsplash API (via Picsum.photos API)

CombineUnsplash A sample project exploring MVVM pattern with SwiftUI/Combine, using Unsplash API (via Picsum.photos API) with detail example. Resource

May 4, 2022
SampleProjectMVVM - Sample project using MVVM parsing data from Giphy.com
SampleProjectMVVM - Sample project using MVVM parsing data from Giphy.com

iOS Take Home Create an iOS app with two views, MainViewController and DetailVie

Jan 27, 2022
Rabble Wabble - This is small Project implemented with respected design patterns
Rabble Wabble - This is small Project implemented with respected design patterns

Rabble_Wabble This is small Project implemented with respected design patterns D

Feb 2, 2022
ProductListSwiftUI - SwiftUI Project to fetch product list using the fakestoreapi and the MVVM architectural pattern
ProductListSwiftUI - SwiftUI Project to fetch product list using the fakestoreapi and the MVVM architectural pattern

ProductListSwiftUI SwiftUI Project to fetch product list using the fakestoreapi

Feb 18, 2022
A blog project where you can write your articles, upload photos, categorize them, and add them to your favorites

A blog project where you can write your articles, upload photos, categorize them, and add them to your favorites. The aim of the project is to learn the use of Core Data.

Mar 21, 2022