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

Related tags

Guides swift mvc uikit
Overview

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.

You might also like...
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.

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.

Charger Arçelik Bootcamp Final Project

Arçelik Bootcamp Bitirme Projesi Libraries and Technologies VIPER Architectur Gesture Recognizer High Order functions (Filter, ForEach, Sorted, Remove

HotCoffee is learning project with MVVM, Generic,Swift 5, TableView

HotCoffee A simple Coffee Ordering app built using TableView, MVVM design pattern and Swift5. Tools Xcode Version 13.2.1 Framework -UIKit Architecture

MVVM-Clean with DI implementation sample project

MVVM-Clean with Dependency Provider Introduction This project contains MVVM-Clean architecture and Dependency injection Folder Structure Every module

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

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

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

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

Owner
Amogh Joshi
iOS Engineer
Amogh Joshi
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

Connie Xu 0 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

Connie Xu 0 Dec 8, 2021
Patika.dev & FMSS Bilişim iOS Swift Bootcamp Graduation Project

TravelGuideApp Description Articles are pulled from the Article json file and displayed in the collection view on the homepage. When the flight button

Gülzade Karataş 3 Dec 14, 2022
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

Allen Wang 11.4k Dec 31, 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

Marcos Rios 0 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

Fernando López López 0 Dec 12, 2021
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

Vinh Nguyen 26 Dec 13, 2022
SampleProjectMVVM - Sample project using MVVM parsing data from Giphy.com

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

HG HrachGarabedian 0 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 D

Ahmed Amin 2 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

Vitalii Shapovalov 4 Sep 16, 2022