# Тестовое задание Умскул Frontend
### Общие требования:
- Vue 3;
- Composition API;
- TypeScript;
- Tailwind;
- Чистый код;
## Данные:
Есть 4 бизнес-сущности:
- Продукт
- Предмет
- Учитель
- Тип класса
Продукт это агрегат предмета, типа класса и учителя.
## Этапы выполнения
1. Создать типы для сущностей.
2. Сделать мокап-сервис который эмулирует бекенд идентично контракту.
3. Подготовить данные от бекенда для передачи их в UI.
4. Реализовать UI каталога
## UI
Страница каталога содержит: фильтр по продуктам, типам класса и список карточек продукта
> Фильтр это - выпадающий список, где первый элемент это "Все" который убирает фильтрацию по этому параметру.
### Карточка продукта
- Заголовок: `{subject.name} - {teacher.name}`
- Цена: `{product.price.amount} {product.price.currency}`
- Тип класса: текст `classType.name`, цвет фона `classType.color`
- Описание продукта: `product.description`
## Контракт:
URL: `api/products/`
Response:
```json
[
{
"id": 1,
"teacher_id": 1,
"subject_id": 1,
"class_type_id": 1,
"description": "Многие думают, что Lorem Ipsum - взятый с потолка псевдо-латинский набор слов, но это не совсем так. Его корни уходят в один фрагмент классической латыни 45 года н.э., то есть более двух тысячелетий назад.",
"price": {
"amount": 100,
"currency": "RUB"
}
}
]
```
---
URL: `api/subjects/`
Response:
```json
[
{
"id": 1,
"name": "Математика"
},
// ..
]
```
---
URL: `api/teachers/`
Response:
```json
[
{
"id": 1,
"name": "Иван Иванов"
},
// ..
]
```
---
URL: `api/class-types/`
Response:
```json
[
{
"id": 1,
"name": "5-8 класс",
"color": "#ADA8FF"
},
// ..
]
```
Статичные данные можно взять [тут](https://hackmd.io/@vadek/umschool-frontend-interview-data).