Skip to content

mohamedfarid1993/Shopping-List

Repository files navigation

Shopping List App

This is a simple iOS application for managing your shopping list. Users can add, edit, delete items, mark items as bought/not bought, and search for items.

Important Notes

  • For data persistence, the app uses Swift Data framework. However, to comply with the task requirements, the Swift Data implementation has been placed on a separate branch named "swift-data". Please review this branch for the Swift Data integration. The main branch contains the solution that adheres to the specified requirements.
  • I tried to simplify the solution as much as possible to be easy for review specially with SwiftData solution.

Features

  • Add Items: Users can add new items to the shopping list using the add button on the top left.
  • Edit Items: Users can edit existing items in the shopping list by selecting an item and edit it in the edit item view.
  • Delete Items: Users can delete items from the shopping list by either swiping left or using edit button on the top left.
  • Mark as Bought: Users can mark items as bought, indicating that they have been purchased.
  • Mark as Not Bought: Users can mark items as not bought, indicating that they have not been purchased yet.
  • Switch Between Bought/Not Bought: Users can switch between bought/not bought items, using the Bought Items toggle.
  • Search: Users can search for items in the shopping list based on their names/descriptions.
  • Sort Ascedingly/Desendingly: Users can sort items ascendingly/descendingly based on the items quantites.

Tests

  • UI Tests: Adding an item and searching for it simple test is adding for both CoreData(main branch) and SwiftUI(swift-data branch)
  • Unit Tests: Added tests for DataRepository & the app view models testable logic for only CoreData(main Branch)
  • Maunal Tests: Manual Testing is conducted to make sure all requirements are met
  • Memory Leaks Tests: Memory leaks checks using Instruments(main branch) with zero memory leaks

Enhancements To Be Added

  • User Experience
  • iPad & Landscape Designs
  • Localizable Text
  • Error Handling

Technologies Used

  • SwiftUI: The user interface is built using SwiftUI.
  • Core Data: Data persistence is handled using Core Data in main Branch.
  • Swift Data: Data persistence is handled using Core Data in swift-data Branch.

Screenshots

Screenshot 1 Screenshot 2 Screenshot 3 Screenshot 4 Screenshot 5 Screenshot 6 Screenshot 7 Screenshot 8 Screenshot 9

Getting Started

To get started with the project, follow these steps:

  1. Clone the repository to your local machine:
git clone https://github.com/mohamedfarid1993/Shopping-List

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages