Mobile developer
В ходе выполнения задания предстоит реализовать полноценное мобильное приложение «Мои задачи» на React Native под платформу Android и iOS. Приложение будет хорошим дополнением в ваше портфолио.

Задание

Описание
Разультатом выполнения задания должно стать небольшое приложение написанное на React Native в связке с TypeScript. На проверку нужно предоставить ссылку на Expo.

Приложение представляет собой todo лист, в котором имеются следующие возможности:
  • Создание списка;
  • Редактирование названия списка;
  • Удаление списка;
  • Создание задачи;
  • Редактирование задачи;
  • Удаление задачи;
  • Выполнение (перечеркивание) задачи.
Основные критерии выполнения задания
  • Требуемый стек соблюден;
  • Приложение должно работать на Android и iOS одинаково;
  • Данные приходящие с API должны быть применены к локальной модели через class-transformer;
  • Верстка соответствует дизайну;
  • Реализованы все функциональные возможности;
  • Имеется валидация форм;
  • Данные полученные с API должны храниться в Redux.
API для задания
Эндпоинт http://mobile-dev.oblakogroup.ru/candidate/:candidate_id
(где: candidate_id — ваше имя и фамилия /candidate/IvanIvanov)

Экшены:
  • Получить список листов GET /list;
  • Создание листа POST /list, body: {"title": "string"}, запрос вернет созданную задачу;
  • Удаление листа DELETE /list/:id, запрос вернет статус 200 в случае успеха;
  • Редактирование листа PATCH /list/:id, запрос вернет измененный лист;
  • Создание задачи POST /list/:list_id/todo, body: {"text": "test", "checked": true}, запрос вернет созданную задачу;
  • Редактирование задачи PATCH /list/:list_id/todo/:id, body: {"text": "test", "checked": true}, запрос возвращает измененную сущность;
  • Удаление задачи DELETE /list/:list_id/todo/:id, запрос вернет статус 200 в случае успеха.
Верстка
Верстка приложения должна соответствовать дизайну, представленному ниже, также предполагается использование Paper UI. Реализация компонентов с нуля, без использования UI не запрещается, однако все должно соответствовать дизайну.
Основная логика:
  • по нажатию на кубики (правый верхний угол), вызывается окно добавления нового листа frame 4;
  • по нажатию на фаб, открывается окно добавления задачи в существующий список frame 3;
  • в каждом листе есть список с завершенными задачами, по умолчанию он свернут. Если этот список развернуть, в нем будут перечеркнутые (законченные) задачи;
  • задачу можно удалить свайпом вправо, как показано на макете frame 2;
  • задачу можно отредактировать, свайпом влево, после чего должно открыться окно редакрирования задачи frame 3, с уже выбранной категорией и заполненным текстом в поле ввода. На этом экране можно изменять категорию или название задачи;
  • тап по задаче завершает (перечеркивает) ее.
На что стоит обратить внимание:
  • использование редакса обязательно, именно редакса не toolkit;
  • не нужно запрашивать списки задач после каждого действия. Такой запрос должен производиться один раз - при первой загрузке приложения. В остальных случаях нужно добавлять новые сущности в существующие массивы в редаксе;
  • все эндпонты должны лежать в env файле;
  • разрешается использовать сторонние библиотеки для осуществления запросов (axios) и UI (paper, swipeable).
После выполнения задания необходимо отправить ссылку на Expo превью и Git с темой письма «MD — Имя Фамилия» на: