iOS-клиент для просмотра фотографий из Unsplash.
Авторизация через OAuth 2.0, лента изображений с бесконечным скроллом, профиль пользователя.
| Экран | Описание |
|---|---|
| Splash | Стартовый экран с проверкой токена авторизации |
| Auth | Авторизация через Unsplash OAuth 2.0 (WebView) |
| Image Feed | Бесконечная лента фотографий с лайками |
| Single Image | Полноэкранный просмотр с зумом и шерингом |
| Profile | Профиль пользователя с аватаром и возможностью выйти |
- Язык: Swift 5
- UI: UIKit + Storyboard
- Архитектура: MVP (Model-View-Presenter)
- Сеть: URLSession
- Авторизация: OAuth 2.0 (Unsplash API)
- Хранение токена: Keychain / UserDefaults
- Загрузка изображений: Kingfisher / кастомный сервис
- Shimmer-эффект: кастомная реализация для плейсхолдеров
- Тесты: XCTest (Unit + UI)
EmilGram/
├── Models/ # Модели данных (Profile, Photo, OAuth)
├── Services/ # Сетевые сервисы, хранение токена, логаут
├── Helpers/ # Расширения UIView, URLSession, HUD
├── View's/
│ ├── Auth/ # Авторизация (WebView + Presenter)
│ ├── ImageList/ # Лента фотографий (Presenter + VC)
│ ├── ProfileView/ # Профиль пользователя
│ ├── Splash/ # Splash-экран
│ └── TabBarController
└── Storyboards/ # Storyboard-файлы
- iOS 13.0+
- Xcode 14+
- Клонируйте репозиторий:
git clone https://github.com/EmilAxme/EmilGram.git
- Откройте
EmilGram.xcodeprojв Xcode - Укажите свои ключи Unsplash API в
AuthConfiguration.swift - Запустите на симуляторе или устройстве (⌘R)
Emil — @EmilAxme
Учебный проект, вдохновлённый Instagram