MovieQuiz - это приложение с квизами о фильмах из топ-250 рейтинга и самых популярных фильмах по версии IMDb.
Одностраничное приложение с квизами о фильмах из топ-250 рейтинга и самых популярных фильмов IMDb. Пользователь приложения последовательно отвечает на вопросы о рейтинге фильма. По итогам каждого раунда игры показывается статистика о количестве правильных ответов и лучших результатах пользователя. Цель игры — правильно ответить на все 10 вопросов раунда.
Приложение использует API для получения данных, поэтому для полноценной работы требуется подключение к интернету.
Для запуска приложения необходимо клонировать репозиторий и запустить проект в Xcode выполнив следующие шаги:
-
Клонировать репозиторий на локальную машину:
git clone https://github.com/Dzhabaev/MovieQuiz-ios.git
-
Перейти в папку проекта, к примеру:
cd ~ cd MovieQuiz-ios
-
Открыть проект с помощью Xcode:
open MovieQuiz-ios.xcodeproj
-
Запустить проект на симуляторе или устройстве.
- Xcode 12.0 или выше
- Swift 5.3 или выше
- iOS 13.0 или выше
- Предусмотрен только портретный режим
- Вёрстка под SE и iPad не предусмотрена
- Зависимости: нет явных зависимостей от сторонних библиотек, за исключением стандартной библиотеки Foundation и UIKit.
В планах по доработке:
- Расширение работы с различными источниками данных о фильмах, включая Kinopoisk API и TMDb API для расширения функциональности и увеличения базы фильмов.
- Реализация кэширования данных для повышения производительности приложения.
- Переход на использование Alamofire для упрощения сетевых запросов и улучшения их поддержки.
Проект использует:
- Swift для разработки мобильного приложения.
- UIKit для построения пользовательского интерфейса.
- URLSession для выполнения сетевых запросов.
- JSONDecoder для декодирования данных из API.
- Figma для дизайна.
- Interface Builder для построения интерфейса.
- User Defaults для хранения пользовательских данных.
- MVP (Model-View-Presenter) архитектура.
- API IMDb:
https://imdb-api.com/api#Top250Movies-header
QuizStepViewModel.swift
: модель данных для шага квиза.QuizResultsViewModel.swift
: модель данных для результатов квиза.QuizQuestion.swift
: модель данных для вопроса квиза.AlertModel.swift
: модель данных для алерта.MovieAndTopModel.swift
: модель данных для фильма.MostPopularMovies.swift
: модель данных для самых популярных фильмов.
QuestionFactory.swift
: фабрика для создания вопросов.QuestionFactoryProtocol.swift
: протокол для фабрики вопросов.QuestionFactoryDelegate.swift
: делегат для фабрики вопросов.StatisticService.swift
: сервис для управления статистикой.NetworkClient.swift
: клиент для выполнения сетевых запросов.MoviesLoader.swift
: загрузчик данных о фильмах.
MovieQuizViewController.swift
: контроллер для отображения вопросов квиза.MovieQuizViewControllerProtocol.swift
: протокол для контроллера квиза.AlertPresenter.swift
: презентер для отображения алертов.MovieQuizPresenter.swift
: презентер для управления квизом.
UIColor+Extensions.swift
: расширения для работы с цветами.Array+Extensions.swift
: расширения для работы с массивами.Date+Extensions.swift
: расширения для работы с датами.
ArrayTests.swift
: тесты для расширений массива.MoviesLoaderTests.swift
: тесты для загрузчика данных о фильмах.MovieQuizPresenterTests.swift
: тесты для презентера квиза.MovieQuizUITests.swift
: UI-тесты для квиза.
Проект можно интегрировать с любой CI/CD системой, поддерживающей сборку проектов Swift и Xcode.
Чингиз Джабаев