Разработка iOS-приложений на Swift

На треке вы познакомитесь с разработкой мобильных «серьёзных» приложений для платформы iOS.

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

За время обучения на школе вы станете участниками проектных команд и разработаете свое приложение, начиная с идеи. Это отличный способ получить опыт совместной работы, увидеть этапы и подводные камни реальной разработки. Финальной целью данного трека является создание каждой командой работоспособного iOS-приложения и презентация его на закрытии Школы.

Куратор трека:

  • Александр Карпов, iOS-разработчик, основатель студии workingeeks.com

Тестовое задание для поступления на трек:

Для успешного выполнения задания требуется разработать мобильное приложение для поиска пользователей Github. Данное тестовое задание разделено на несколько этапов, и выполнение уже первого будет являться отличным результатом. Задание дается не только для того, чтобы мы могли оценить вашу способность к программированию и самостоятельной работе, но и для того, чтобы у вас была мотивация самостоятельно изучить базовые вещи для разработки на каждой платформе. На каждом этапе специфических требований к интерфейсу нет и можно давать волю воображению.

ФУНКЦИОНАЛЬНЫЕ ТРЕБОВАНИЯ НА ПЕРВОМ ЭТАПЕ:
  • Создание окна с поисковой строкой

Для выполения задания вам может пригодиться:
data class User(val name: String, val repositories: List<Repository>)
data class Repository(val name: String, val description: String, val lang: String, val userName: String)

...
val reposForUser1 = listOf(
Repository(name = "HelloWorld", description = "I'll be a next Hokage of this programming world", lang = "Kotlin", userName = "User2"),
Repository(name = "Cells", description = "I have got a new arm", lang = "Cobol", userName = "User1")
)
val reposForUser2 = listOf(
Repository(name = "OldKey", description = "I want to know what are this cellar contains", lang = "Kotlin", userName = "User1"),
Repository(name = "Sea", description = "I'll kill all titans and go to the sea, witch contains salt", lang = "Java", userName = "User2")
)

ФУНКЦИОНАЛЬНЫЕ ТРЕБОВАНИЯ НА ВТОРОМ ЭТАПЕ:
  • Создание всех трех окон
  • Возможность просматривать информацию о пользователях
  • Вся информация о пользователе (ID, названия и описание репозиториев) задается внутри программы

Для выполения задания вам может пригодиться:
data class User(val name: String, val repositories: List<Repository>)
data class Repository(val name: String, val description: String, val lang: String, val userName: String)

...
val reposForUser1 = listOf(
Repository(name = "HelloWorld", description = "I'll be a next Hokage of this programming world", lang = "Kotlin", userName = "User2"),
Repository(name = "Cells", description = "I have got a new arm", lang = "Cobol", userName = "User1")
)
val reposForUser2 = listOf(
Repository(name = "OldKey", description = "I want to know what are this cellar contains", lang = "Kotlin", userName = "User1"),
Repository(name = "Sea", description = "I'll kill all titans and go to the sea, witch contains salt", lang = "Java", userName = "User2")
)

ФУНКЦИОНАЛЬНЫЕ ТРЕБОВАНИЯ НА ТРЕТЬЕМ ЭТАПЕ:

С использованием открытого Github API уметь поддерживать актуальность поиска пользователей и информации о них

ФУНКЦИОНАЛЬНЫЕ ТРЕБОВАНИЯ НА ЧЕТВЕРТОМ ЭТАПЕ:

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

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

Сдача задания

Результатом выполненной работы должен являться открытый github-репозиторий с проектом приложения.

Ссылку на репозиторий присылайте на почту csmobile@hse.ru 

Когда будет отправлять на почту задание, пишите тему письма: Ваше ФИО_название трека на латинице_задание (например, Иванов Петр Алексеевич_iOS_задание).


Материалы, с которых можно начать, для iOS:
https://swiftbook.ru/content/1-index/
https://swiftbook.ru/content/35-index/