Высокая сложностьВысокий уровень

Тестовое задание по JavaScript от компании BirdsBuild

Тестовое задание на позицию «Frontend разработчик Nuxt.js»

Средствами Vue.js реализуйте небольшое SPA приложение, которое состоит из 3 страниц: «Избранное», «Склад», «Сделки».

Ссылка на макет:

https://www.figma.com/file/esSprOWWWjJ1Gb7IoMHGmq/Untitled?node-id=0%3A1

Срок выполнения задания: 7 дней

Готовое задание выложить на GitHub или GitLab, и опционально залить на vercel или другой удобный хостинг.

Описание страниц:

Приложение запускается со страницы «Склад». На которой можно выполнить следующие действия:
Сортировка по типам предложений (Все, Аукцион, Прямые продажи);

Поиск по наименованию;

Добавить в сделки;

Добавить в избранное;

На странице «Сделки» выполняются следующие действия:

 -    Сортировка по типам предложений (Все, Аукцион, Прямые продажи);

Оплатить;

Добавить в избранное;

На странице «Избранное» выполняются следующие действия:

 -    Сортировка по типам предложений (Все, Аукцион, Прямые продажи);

Оплатить;

Добавить в сделки;

Описание карточки предложения:

Карточки предложений включают в себя следующие пункты:

Изображение товара;

Тип Предложения: аукцион или разовое предложение( относится к прямым продажам);

Название товара;

Город (в котором находится товар);

Продавец (название компании);

Вид товар;

Описание товара;

Цена товара;

Количество товара;

Задачи:

Создать компонент «Карточка предложения» (Включает фейковые данные из JSON’a, предложений должно быть не меньше 10 штук);

Отобразить карточки предложений в разделе «Склад»;

Сортировка предложений (все, аукцион, прямые продажи);

Поиск в складе по названию товара;

Кнопка «Добавить в сделки» (по клику карточка добавляется в раздел «Сделки»);
Кнопка добавления предложения в избранное (по клику предложение добавляется в раздел «Избранное»);

Кнопка «Оплатить» в разделе «Сделки»;

Кнопка «Оплачено» в разделе «Сделки» (состояние disabled, после клика на кнопку «Оплатить»);

Требования к функционалу:

Все действия на сайте должны происходить без перезагрузки страницы;

В качестве сборщика используйте Webpack, если это необходимо;

Технические требования:
Использование следующего стека технологий: Vue 3 (Composition Api) + TypeScript;

Nuxt 3 - опционально;

State менеджер - pinia, допустимо использование vuex
Приложение должно быть разбито на разумное количество Vue - компонентов;

Адаптивность приветствуется, но не обязательна;

Верстка без использования css-фреймворков

Источник задания