Тестовое задание на позицию mobile-разработчика в компании Gratio. Данное задание можно выполнять на удобном вам языке и фреймворке (Kotlin/Swift/Flutter/ReactNative), нам важна не конкретная технология, а результат.
Цель данного задания — проверить базовые навыки разработки мобильных приложений: умение работать с API, проектировать архитектуру, реализовывать основные функции, писать чистый код и тесты. Архитектура приложения любая на ваш выбор, однако нужно будет обосновать выбор в документации.
Разработать мобильное приложение со следующей функциональностью:
- Форма с полями: email (валидация на корректность) и пароль (минимум 6 символов).
- Кнопка «Войти».
- API:
POST /auth/login
(эмулировать успешный ответ при валидных данных, например:email: test@test.com
,password: 123456
). - При успешной авторизации переход на экран списка постов.
- Отображение списка постов в виде карточек (заголовок, краткий текст, автор).
- API:
GET /posts?page={page}&limit={limit}
(используйте JSONPlaceholder или аналогичный сервис). - Пулл-ту-рефреш для обновления списка.
- Кэширование данных: при отсутствии интернета показывать последние загруженные посты.
- Индикатор отсутствия соединения.
- Биометрическая аутентификация: (Face ID/Touch ID)
- Анимации: Плавные переходы между экранами, лоадеры
- Динамическая тема: Переключение между светлой/темной темой
- Deep Links: Возможность открыть экран поста по ссылке
app://post/{id}
- Любой пример работы с нативным API: Например выбор локации пользователя через GPS.
- Управление состоянием и асинхронная обработка данных: покажите навыки работы с фреймворком на ваш выбор (Kotlin Flow, Redux, RxSwift или аналоги)
- Тестирование: осмысленные юнит-тесты на ключевые компоненты
- Корректность работы: Приложение не крашится, данные отображаются верно.
- Качество кода: покажите умение организовать структуру кода и писать понятный код.
- Документация: Readme с описанием архитектуры, инструкцией по запуску, скриншотами.
- Дополнительные фичи: Реализация бонусных заданий.
- Исходный код на GitHub/GitLab (открытый репозиторий).
- APK/IPA или собранный билд в репозитории.