Welcome to Getir Lite. A Simplified version of the Getir app! This app allows user to browse through products, add or remove to cart and checkout seamlessly.
Browse Products:
- Explore a variety of products available for purchase.
- (Note that none of the products nor suggested products are real. They are been provided by a mock api.)
Manage Your Basket:
- Easily add or remove products to your shopping cart for later purchase.
- With the implemented Core Data, Do not lose your cart when re-launching the app.
Checkout:
- Simulate the checkout process to complete your order!
Image 1 | Image 2 | Image 3 |
---|---|---|
Listing Without PRoducts | Listing With Products | Product Detail (Not In Cart) |
Image 4 | Image 5 | Image 6 |
---|---|---|
Product Detail (In Cart) | Basket | Basket (Product Removed) |
- Xcode: Version 15.3
- Language: Swift 5.10
- Minimum iOS Version: 13.0
- Dependency Manager: SPM
In developing Getir Final Project, VIPER (View-Interactor-Presenter-Entity-Router) architecture is being used for these key reasons:
- Clear Separation: VIPER architecture separates UI, business logic, and navigation for cleaner, more maintainable code.
- Test-Driven Development: VIPER's modular structure enables comprehensive unit testing, ensuring app stability.
- Scalability: VIPER's modular design allows easy addition of features and modifications.
- All of the presenters and interactors of every module
- CartService
- SwiftAsyncNetworking, GetirSDK (my own local SPMs) are tested.
Before you begin, ensure you have the following:
- Xcode installed
Also, make sure that these dependencies are added in your project's target:
- Kingfisher: Kingfisher is a lightweight and pure Swift library for downloading and caching images from the web.
- SwiftAsyncNetworking: My own local package for concurrent networking. (Available documentation in project directory)
- GetirSDK: My own local package to mimic the GetirService. (Available documentation in project directory)
-
Clone the repository:
git clone https://github.com/lochmidth/GetirFinalProject.git
-
Open the project in Xcode:
cd GetirFinalProject open GetirFinalProject.xcodeproj
-
Add required dependencies using Swift Package Manager:
- Kingfisher - SwiftAsyncNetworking (local) - GetirSDK (local)
-
Build and run the project.
- Open the app on your simulator or device.
- Browse through products, add or remove to cart by tapping on steppers
- Navigate to Product Detail by tapping on the relevant product.
- See additional information about the product if provided.
- By tapping on "Add to Cart" or stepper buttons, manage your cart.
- Tap on the upper-right Basket View for navigating to Basket.
- Manage your cart by adding or removing already-in-cart products.
- Add from suggested producs to cart if interested.
- Tap checkout button to checkout, or clear the cart by tapping on trash icon.
- When updating BasketViewController by adding or removing product from cart, UI flicks for a really short time due to collectionView.reload()
- A more pleasent and seamless animations can be add for a better user experience.
- Localization for other languages can be added to be able to reach more user.
- Consolidate CartService into GetirSDK to adhere more closely to the SOLID principles, particularly the Single Responsibility Principle.