Выпускники семестрового курса «Разработка приложений на iOS», Технопарк Mail.ru +25


Свои дипломные проекты в этом сезоне защитила новая группа выпускников семестрового курса «Разработка на iOS» Технопарка (МГТУ им. Баумана). Это был экспериментальный семестр, все занятия проходили онлайн. Преподаватели выбрали четыре самых интересных решения, о которых мы хотим вам рассказать:

  • Приложение Personal Teacher для репетиторов.
  • Приложение LocalFootball для футбольных турниров.
  • Приложение PhoRent для аренды оборудования.
  • Приложение TastyThings для кулинарных рецептов.

Приложение Personal Teacher для репетиторов


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

Приложение состоит из трёх основных экранов:

  • расписание,
  • ученики,
  • финансы.


Экран расписания помогает быстро находить уроки на определенные даты. Заголовок получает название месяца в виде строки от viewModel (приложение написано согласно архитектурному паттерну MVVM). Блок дней недели — статичный stack view. Дни месяца — collectionView, в которой количество ячеек соответствует количеству дней выбранного месяца + сдвиг относительно первого дня недели в месяце.

Под календарем располагается tableView с главной информацией об уроке в текущий день: фотографией и именем ученика, названием урока, его временем и датой, ценой за урок (лейбл цены будет иметь зеленый цвет, если урок оплачен).

Экран учеников служит хранилищем всех учеников, как записная телефонная книжка. Он представляет из себя tableView на весь экран. Используется та же кастомная ячейка, только заполняется другой информацией.

При нажатии на ученика вы переходите на его личную страницу в приложении. Там содержится:

  • Информация об оплаченных занятиях и задолженностях.
  • Список всех прошедших и предстоящих занятий, отсортированный по датам и времени.

В stackView с суммами по оплаченным занятиям и долгу есть кнопка карты. При ее нажатии будет открыт mapController на основе MapKit и отобразится место адреса ученика с его фотографией. Можно проложить туда пеший маршрут.

А при нажатии на какое-то занятие на личной странице ученика приложение открывает отдельную страницу со всей информацией об этом занятии:

  • Время проведения и статус оплаты.
  • Домашнее задание.
  • Заметки о занятии.
  • Добавленные фотографии с занятия.



Страница занятия состоит из блоков:

  • Верхний — stackView с информацией о порядковом номере занятия, его датой, временем, а также стоимостью.
  • Средний — коллекция с горизонтальным скроллом, для добавления фотографий.
  • Нижний — три textView с домашним заданием, заметкой о прошедшем занятии и текстовым полем для будущего push-уведомления.

И наконец третий главный экран — экран финансов. В верхней половине строится график по всем оплаченным занятиям за месяц, ниже выводится список этих занятий, отсортированный по дате. Можно вывести все неоплаченные занятия и отобразить их в tableView.



Приложение создано с помощью технологий:

  • Firebase.
  • Core Data.
  • MVVM.

База данных Firebase используется для хранения всех данных об учениках и занятиях, кроме фотографий. Также эта база позволяет без дублирования кода работать в офлайне. Облачное хранилище Firebase применяется для хранения фотографий учеников и снимков с занятий, при этом офлайновая работа с фотографиями обеспечивается с помощью CoreData. Firebase Authentication используется для авторизации. А что касается архитектуры, то проект строился по паттерну MVVM.

В будущем авторы планируют создать приложение для учеников и чат между репетитором и учениками.

Команда проекта: Василий Сахаров, Никита Павлов.

Защита проекта.

Приложение LocalFootball для футбольных турниров


Приложение будет интересно как болельщикам, так и самим игрокам и организаторам турниров. Здесь можно будет посмотреть всю необходимую информацию:

  • Данные по турнирам.
  • Турнирную таблицу в двух формах.
  • Актуальную статистику команд.
  • Расписание и результаты матчей.



Также LocalFootball умеет добавлять данные в календарь и заранее напомнит вам о предстоящих матчах.

У приложения такая архитектура:


Приложение создано с помощью технологий:

  • MVC + Dependency Injection
  • CoreData + FetchResultsController
  • SwiftyJSON
  • .xib + AutoLayout
  • SDWebImage
  • EventKit

Проект построен на архитектуре MVC, и чтобы избежать проблем, характерных для этого паттерна, авторы:

  • выделили общую UI-логику всех ViewController в отдельный суперкласс;
  • вынесли работу с календарем в отдельный модуль;
  • использовали классы-конфигураторы для каждой ячейки таблиц.

Также в проекте использован паттерн Dependency Injection для сетевого слоя. А создание легко конфигурируемого класса с тестовыми данными помогает тестировать разные сценарии и обработку ошибок.

Для хранения данных на устройстве используется CoreData, а для их отображения — FetchResultsController. Интерфейс создан с помощью .xib—файлов и AutoLayout. Для парсинга данных применяется SwiftyJSON, для загрузки и показа изображений — SDWebImage, а чистота кода обеспечивается с помощью SwiftLint.

Поскольку объём информации для отображения экранов команд и турниров невелик, все необходимые для них данные грузятся единым запросом. А матчей обычно гораздо больше, поэтому загружать их все разом — не самая лучшая идея. Для дозагрузки матчей в приложении была реализована пагинация.

В будущем планируется:

  • Разработать подробный экран футбольной команды с её составом.
  • Добавить push-уведомления с текущим счетом матча.
  • Создать отдельное приложение для организаторов турниров.

Команда проекта: Анна Акентьева, Дарья Леонова, Данил Рогозин.

Защита проекта.

Приложение PhoRent для аренды оборудования


В первую очередь приложение создавалось для аренды фототехники. Сегодня это уже заметный сегмент рынка, но на нём нет удобных специализированных приложений. А PhoRent помогает быстро и наглядно посмотреть предлагаемую в аренду технику, сравнить условия и разместить заказ.


Товары для аренды разделены на категории. Есть поиск и фильтры по стоимости аренды и производителю. Можно указывать количество арендуемых единиц — максимальное значение ограничивается текущим остатком в базе данных. Также можно указать в заказе дату начала аренды. Все выбранные товары сначала кладутся в корзину, и затем пользователь оплачивает суммарную стоимость аренды. В профиле хранится информация о прошлых заказах.

Впрочем, приложение можно использовать для аренды не только фототехники, но вообще любых товаров (кроме, разве что, недвижимости и транспорта, в этих сегментах рынка уже есть серьёзные инструменты). Так что PhoRent может быть и удобным инструментом не только для тех, кому нужно что-то арендовать, но и для компаний, которым важно расширить свою клиентскую базу.

Приложение создано с помощью технологий:

  • Swift.
  • KingFisher.
  • Node.js.
  • FireBase.
  • FireStore.

Приложение построено по архитектурному паттерну MVP. В него добавлены сервисы для различных задач:

  • ModuleBuilder для создания окон,
  • Router для связи и перехода между ними,
  • NetworkService для работы с сетью.

Storyboard не использовали, поэтому все переходы сделаны в коде, часть страниц отрисована в xib'ах.

Для хранения информации о клиентах и заказах используется FireStore, для которого написали серверную часть на Node.js. В том же FireStore хранятся URL изображений, сами картинки лежат в хранилище FireBase, а в приложение они загружаются с помощью KingFisher. Через FirebaseAuth происходит аутентификация пользователей.

Часть ячеек таблицы с товарами можно настроить в зависимости от потребностей конкретной компании. В профиле пользователя можно установить аватар, есть проверка адреса почты и номера телефона.

Команда проекта: Елена Качармина, Илья Бузырев, Александр Сетров.

Защита проекта.

Приложение для кулинарных рецептов TastyThings


Авторы вдохновлялись любовью ко вкусной еде и её приготовлению. Ребятам хотелось иметь все свои любимые рецепты под рукой, поэтому создали удобное приложение для их хранения, способное работать в оффлайн-режиме и автоматически подсчитывать калорийность блюд.

Также у TastyThings есть социальные функции: пользователи могут обмениваться рецептами. Есть система рейтинга пользователей и возможность ставить рецептам лайки. Приложение позволяет искать по ингредиентам (и не только), чтобы приготовить интересные блюда из того, что есть в холодильнике



Для хранения рецептов и данных пользователей, а также для авторизации применяется Firebase.
Весь интерфейс создан на SwiftUI.

Команда проекта: Антон Уханов, Илья Шевчук.

Защита проекта.

* * *


В скором времени мы расскажем и о самых интересных дипломных проектах по разработке под Android, по C++, нейросетям, фронтенд-разработке, Go и созданию интерфейсов. Подробнее о наших образовательных проектах вы можете почитать по этой ссылке. И почаще заходите на канал Технострим, там регулярно появляются новые обучающие видео о программировании, разработке и других дисциплинах.




К сожалению, не доступен сервер mySQL