Проект разработан с использованием следующих технологий:
- SwiftUI с новым фреймворком Observation для более высокой производительности
- URLSession и async/await для выполнения сетевых запросов
- MVVM с выделенным сервисным слоем
- Unit Testing для тестирования бизнес-логики
API Studio Ghibli: https://ghibliapi.vercel.app/
- Base URL:
https://ghibliapi.vercel.app/ - Используемые endpoints:
/films,/people - Аутентификация: не требуется
- TabView с независимыми NavigationStack для каждой вкладки.
- Экран списка — загрузка данных из API и отображение списка фильмов.
- Экран деталей — подробная информация о фильме с асинхронной загрузкой изображений.
- Тестирование — использование моков и внедрения зависимостей (Dependency Injection).
Приложение позволяет добавлять фильмы в избранное с сохранением данных локально между запусками.
Реализован поиск по фильмам с фильтрацией результатов и асинхронным debounce, что снижает количество лишних операций при вводе текста.
Настройки приложения позволяют изменять тему оформления. Выбранная тема сохраняется в UserDefaults и автоматически восстанавливается при следующем запуске.
- SwiftUI
- Observation
- MVVM (Model–View–ViewModel)
- URLSession
- Swift Concurrency (async/await)
- Dependency Injection
- Unit Testing
- UserDefaults для хранения пользовательских настроек
- Локальное хранение данных для избранных фильмов