Giter Club home page Giter Club logo

getirfinalproject's Introduction

Getir Lite App Icon

Getir Lite - Patika.dev Final Project by Alphan Ogün

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.

Table of Contents

Features

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!

Screenshots

Image 1 Image 2 Image 3
Listing1 Listing2 Detail1
Listing Without PRoducts Listing With Products Product Detail (Not In Cart)
Image 4 Image 5 Image 6
Detail2 Basket1 Basket2
Product Detail (In Cart) Basket Basket (Product Removed)

Tech Stack

  • Xcode: Version 15.3
  • Language: Swift 5.10
  • Minimum iOS Version: 13.0
  • Dependency Manager: SPM

Architecture

Architecture

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.

Unit Tests

  • All of the presenters and interactors of every module
  • CartService
  • SwiftAsyncNetworking, GetirSDK (my own local SPMs) are tested.

Getting Started

Prerequisites

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)

Installation

  1. Clone the repository:

    git clone https://github.com/lochmidth/GetirFinalProject.git
  2. Open the project in Xcode:

    cd GetirFinalProject
    open GetirFinalProject.xcodeproj
  3. Add required dependencies using Swift Package Manager:

    - Kingfisher
    - SwiftAsyncNetworking (local)
    - GetirSDK (local)
  4. Build and run the project.

Usage

Listing - Browse Products

  1. Open the app on your simulator or device.
  2. Browse through products, add or remove to cart by tapping on steppers
  3. Navigate to Product Detail by tapping on the relevant product.

Listing


Product Detail

  1. See additional information about the product if provided.
  2. By tapping on "Add to Cart" or stepper buttons, manage your cart.

Listing


Basket

  1. Tap on the upper-right Basket View for navigating to Basket.
  2. Manage your cart by adding or removing already-in-cart products.
  3. Add from suggested producs to cart if interested.
  4. Tap checkout button to checkout, or clear the cart by tapping on trash icon.

Listing


Known Issues

  • When updating BasketViewController by adding or removing product from cart, UI flicks for a really short time due to collectionView.reload()

Improvemets

  • 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.

getirfinalproject's People

Contributors

lochmidth avatar

Stargazers

Ensar Köseoğlu avatar Kerem Demir avatar Murat Albayrak avatar Rami avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.