https://github.com/2gpb/testtaskavito
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.
https://github.com/2gpb/testtaskavito
swift test-task uikit
Last synced: 12 months ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/2gpb/testtaskavito
- Owner: 2Gpb
- Created: 2025-02-10T19:27:47.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-19T10:06:34.000Z (12 months ago)
- Last Synced: 2025-02-19T10:23:27.637Z (12 months ago)
- Topics: swift, test-task, uikit
- Language: Swift
- Homepage:
- Size: 4.72 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# TestTaskAvito
### Описание проекта:
Проект включает постраничную загрузку товаров, удобный поиск с возможностью фильтрации, кэширование изображений для быстрой загрузки, а также плавный shimmer-эффект при подгрузке данных.
Реализовано сохранение истории поисковых запросов, обработка empty-state при отсутствии товаров или ошибке загрузки, детальная карточка товара и удобный список покупок
с возможностью сохранять, удалять и делиться товарами.. Кроме того, предусмотрена поддержка тестов для обеспечения стабильности и надежности приложения.
### Дизайн
[Макет в Figma](https://www.figma.com/design/XO8gGlwIRKt8AhTk6Tbdje/Test-task-Avito?node-id=0-1&t=up2szI7Bw4SPyM5g-1)
### Архитектура:
**SVIP (VIPER):**
- View – Отображает интерфейс и взаимодействует с пользователем.
- Interactor – Бизнес-логика приложения.
- Presenter – Подготовка данных для пользовательского интерфейса и реализация Router'a.
- Router – Управление переходами между экранами.
- Worker – Обработка данных и сетевых запросов.
Более подробно об архитектурном шаблоне: [Статья](https://habr.com/ru/companies/wildberries/articles/798275/)
### Технологии
- Swift
- UIKit | UIView+Pin
- URLSession
- UserDefaults | CoreData
- NSCache
- XCTest
### Функционал:
**1. Экран поиска (выдача товаров) ✅**
- Список товаров с постраничной загрузкой
- Отображение товаров в виде плитки (2 товара в ряду)
- Возможность фильтровать товары по категории или ценовому диапазону
- Поиск по тексту с сохранением 7 последних неповторяющихся запросов
- Empty-state при отсутствии товаров и Error-state при ошибке загрузки
- Shimmer-эффект при загрузке фото
- Переход на карточку товара
**2. Карточка товара ✅**
- Отображение изображения, заголовка, описания, цены и категории
- Placeholder при ошибке загрузки изображения
- Возможность добавить товар в список покупок
- Возможность перехода в список покупок
- Возможность увеличить/уменьшить количество товара
- Возможность поделиться товаром
- Возврат на экран поиска
**3. Список покупок ✅**
- Отображение добавленных товаров с картинками, ценами и количеством
- Возможность изменить количество товара или удалить его
- Сохранение списка покупок между сессиями (персистентность)
- Возможность очистить весь список
- Синхронизация состояния с экраном поиска и карточками товаров
- Функция «поделиться» списком покупок в мессенджере или заметках
- Переход на карточку товара
### Тестирование
**Проект содержит XCTest-тесты**
- Реализованы Unit-тесты для бизнес-логики отдельных модулей
### Запуск проекта
1. ```git clone git@github.com:2Gpb/TestTaskAvito.git```
2. Открыть TestTaskAvito.xcodeproj в Xcode
3. Запустить проект
# Visual


