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.
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
- Swift
- UIKit | UIView+Pin
- URLSession
- GCD
- UserDefaults | CoreData
- NSCache
- SOLID
- XCTest
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
The project includes XCTest tests
- Unit tests implemented for business logic in separate modules
git clone [email protected]:2Gpb/TestTaskAvito.git
- Open TestTaskAvito.xcodeproj in Xcode
- Run the project









