Основной испльзуемый стек: UIKit, CoreData, Navigation Controller, NetworkService, XML parser, UICollectionView, UIScrollView, custom views+collectionViewCells, UserDefaults.
Используемые библеотеки: SnapKit, Alamofire, SDWebImage.
Проект написан на MVP.
Приложение получает данные (новости) в формате XML с сайта Lenta.ru, парсит данные и отображает их в CollectionView. В первой секции отображаются возможные разделы с новостями. При нажатии на раздел происходит загрузка его новостей.
При нажатии на новость осуществляется переход на экран с ее изображением, заголовком и описанием. Экран деталей новости реализован с помощью ScrollView. При возвращении на предыдущий экран эта новость будет помечена как проcмотренная. Отображение просмотренности реализовано через UserDefaults, поэтому при перезапуске приложения просмотренность сохраняется. Реализована функция pull to refresh через refreshControl и кнопкой обновить.
После загрузки новостей они сохраняются в CoreData, поэтому если отсутствует соединение с интернетом или получить данные не удалось, то будут загружены новости с предыдущего запуска приложения. В случае ошибки получения новостей пользователь будет уведомлен об этом путем получения алерта.