Image Feed - многостраничное приложение предназначено для просмотра изображений через API Unsplash.
Приложение реализует авторизацию через OAuth Unsplash, позволяет пользователям просматривать бесконечную ленту изображений, добавлять их в избранное и делиться ссылками. Главный экран состоит из ленты с изображениями, где можно просматривать, лайкать и добавлять изображения в избранное. Также доступен просмотр изображения на весь экран и возможность делиться им. У пользователей есть профиль с избранными изображениями и краткой информацией о себе. В приложении предусмотрена удобная навигация и интерфейс, с использованием сторонних библиотек для расширения функционала.
Приложение использует API для получения данных, поэтому для полноценной работы требуется подключение к интернету.
Для запуска приложения необходимо клонировать репозиторий и запустить проект в Xcode выполнив следующие шаги:
-
Клонировать репозиторий на локальную машину:
git clone https://github.com/Dzhabaev/ImageFeed.git
-
Перейти в папку проекта, к примеру:
cd ~/ImageFeed
-
Открыть проект с помощью Xcode:
open ImageFeed.xcodeproj
-
Запустить проект на симуляторе или устройстве.
- Xcode 12.0 или выше
- Swift 5.3 или выше
- iOS 13.0 или выше
- Предусмотрен только портретный режим
- Вёрстка iPad не предусмотрена
- Зависимости: Kingfisher, ProgressHUD, SwiftKeychainWrapper
В планах по доработке:
- Сверстать все экраны приложения кодом.
- Добавить возможность редактирования профиля пользователя.
- Реализовать поддержку ландшафтного режима.
- Покрыть все экраны тестами.
Проект использует:
- Swift для разработки мобильного приложения.
- UIKit для построения пользовательского интерфейса.
- OAuth 2.0 Authorization для авторизации.
- Auto Layout для размещения элементов интерфейса.
- Animation для анимаций.
- UITableView и UIScrollView для отображения контента.
- SPM для управления зависимостями.
- Unit-тесты и UI-тесты для обеспечения качества кода.
AppDelegate
- Класс, отвечающий за жизненный цикл приложения.SceneDelegate
- Класс, отвечающий за управление сценами приложения.UIBlockingProgressHUD
- Компонент для отображения индикатора загрузки, блокирующего интерфейс.Auth
AuthConfiguration
- Конфигурация для авторизации через OAuth.SplashViewController
- Контроллер для отображения начального экрана загрузки.AuthViewController
- Контроллер для экрана авторизации.WebViewViewController
- Контроллер для отображения WebView с авторизацией через Unsplash.WebViewPresenter
- Презентер для управления WebView.AuthHelper
- Вспомогательный класс для работы с авторизацией.
TabBar
TabBarController
- Контроллер для управления таб баром.
ImagesList
Models
- Модели данных для списка изображений.ImagesListService
- Сервис для работы с API Unsplash и загрузки изображений.ImagesListViewController
- Контроллер для отображения списка изображений.ImageListPresenter
- Презентер для управления логикой списка изображений.ImagesListCell
- Ячейка таблицы для отображения изображения.
SingleImageView
SingleImageViewController
- Контроллер для отображения одного изображения на весь экран.
Profile
Models
- Модели данных для профиля пользователя.ProfileService
- Сервис для работы с данными профиля.ProfileImageService
- Сервис для загрузки изображений профиля.ProfileViewController
- Контроллер для отображения профиля пользователя.ProfilePresenter
- Презентер для управления логикой профиля пользователя.
Networking
OAuth2Service
- Сервис для работы с OAuth2 авторизацией.OAuth2TokenStorage
- Хранилище для хранения OAuth2 токенов.OAuthTokenResponseBody
- Модель данных для ответа от OAuth2 сервера.NetworkError
- Перечисление возможных ошибок сети.
Extensions
Array+Extensions
- Расширения для работы с массивами.URLSession+Extensions
- Расширения для работы с URLSession.URLRequest+Extensions
- Расширения для работы с URLRequest.
Main
- Основная точка входа приложения.Assets
- Ресурсы и ассеты приложения.LaunchScreen
- Экран загрузки приложения.Info
- Информационные файлы проекта.ImageFeedTests
WebViewTests
- Тесты для WebView компонентов.ImagesListTests
- Тесты для списка изображений.ProfileTests
- Тесты для профиля пользователя.
ImageFeedUITests
ImageFeedUITests
- UI-тесты для проверки пользовательского интерфейса.
Проект можно интегрировать с любой CI/CD системой, поддерживающей сборку проектов Swift и Xcode.
Чингиз Джабаев