Skip to content
/ Avito Public

An iOS shopping app with paginated loading, search with filters, image caching, and shimmer effects. Supports search history, error handling, a shopping list with persistence, and sharing.

Notifications You must be signed in to change notification settings

2Gpb/Avito

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Avito

Project Description:

The project includes paginated product loading, a convenient search with filtering capabilities, image caching for fast loading, and a smooth shimmer effect when loading data.
It implements search query history saving, empty-state handling when no products are available or in case of a loading error, a detailed product card, and a user-friendly shopping list
with the ability to save, delete, and share products. Additionally, test support is provided to ensure the stability and reliability of the application.

Design

Figma Prototype

Architecture:

SVIP (VIPER):

  • View – Displays the interface and interacts with the user.
  • Interactor – Contains the business logic of the application.
  • Presenter – Prepares data for the user interface and implements the Router.
  • Router – Manages screen transitions.
  • Worker – Handles data processing and network requests.

More details about the architectural pattern: Article

Technologies

  • Swift
  • UIKit | UIView+Pin
  • URLSession
  • GCD
  • UserDefaults | CoreData
  • NSCache
  • SOLID
  • XCTest

Functionality:

1. Search Screen (Product Listing) ✅

  • Paginated product list
  • Grid view display (2 products per row)
  • Ability to filter products by category or price range
  • Text search with the last 7 unique queries saved
  • Empty-state when no products are available and error-state for loading failures
  • Shimmer effect when loading images
  • Navigation to the product card

2. Product Card ✅

  • Displays image, title, description, price, and category
  • Placeholder in case of image loading failure
  • Ability to add the product to the shopping list
  • Navigation to the shopping list
  • Ability to increase/decrease product quantity
  • Ability to share the product
  • Return to the search screen

3. Shopping List ✅

  • Displays added products with images, prices, and quantities
  • Ability to change the quantity or remove a product
  • Persistent shopping list across sessions
  • Option to clear the entire list
  • State synchronization with the search screen and product cards
  • "Share" function to send the shopping list via messenger or notes
  • Navigation to the product card

Testing

The project includes XCTest tests

  • Unit tests implemented for business logic in separate modules

Running the Project

  1. git clone [email protected]:2Gpb/TestTaskAvito.git
  2. Open TestTaskAvito.xcodeproj in Xcode
  3. Run the project

Visual

Запись экрана 2025-02-19 в 11 45 22 Запись экрана 2025-02-19 в 12 01 31

About

An iOS shopping app with paginated loading, search with filters, image caching, and shimmer effects. Supports search history, error handling, a shopping list with persistence, and sharing.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages