Skip to content

Latest commit

 

History

History
132 lines (99 loc) · 7.82 KB

README.md

File metadata and controls

132 lines (99 loc) · 7.82 KB

Image Feed

Image Feed - многостраничное приложение предназначено для просмотра изображений через API Unsplash.

Описание

Приложение реализует авторизацию через OAuth Unsplash, позволяет пользователям просматривать бесконечную ленту изображений, добавлять их в избранное и делиться ссылками. Главный экран состоит из ленты с изображениями, где можно просматривать, лайкать и добавлять изображения в избранное. Также доступен просмотр изображения на весь экран и возможность делиться им. У пользователей есть профиль с избранными изображениями и краткой информацией о себе. В приложении предусмотрена удобная навигация и интерфейс, с использованием сторонних библиотек для расширения функционала.

ImageFeed

Инструкция по развёртыванию или использованию

Приложение использует API для получения данных, поэтому для полноценной работы требуется подключение к интернету.

Для запуска приложения необходимо клонировать репозиторий и запустить проект в Xcode выполнив следующие шаги:

  1. Клонировать репозиторий на локальную машину:

    git clone https://github.com/Dzhabaev/ImageFeed.git
  2. Перейти в папку проекта, к примеру:

    cd ~/ImageFeed
  3. Открыть проект с помощью Xcode:

    open ImageFeed.xcodeproj
  4. Запустить проект на симуляторе или устройстве.

Системные требования

  • 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-тесты для обеспечения качества кода.

Расширенная техническая документация

API Endpoints
Ссылки
Структура проекта
  • 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 для запуска

Проект можно интегрировать с любой CI/CD системой, поддерживающей сборку проектов Swift и Xcode.

Создатели

Чингиз Джабаев