# Требования Веб приложение которое позволяет составлять и проходить тесты. Для UI можно подключить библиотеку react material и использовать компоненты оттуда. **Опционально** можно сразу поддержать темы чтобы было легче кастомизировать все компоненты одновременно. https://v4.mui.com/ru/customization/theming/ ## Страница со списком тестов На этой странице в таблице отображаются доступные тесты. Таблицу можно взять отсюда https://v4.mui.com/ru/components/tables/ Колонки: * id * Название * Составитель теста * Количество вопросов * Колонка с доступными действиями над тестом * Пользователь может открыть тест на редактирование или удалить его * Отображать действия можно в виде иконок (например https://codepen.io/cristinaconacel/pen/dgxqxj) или они будут доступны через контекстное меню (https://v4.mui.com/ru/components/menus/) При клике на строку в таблице должен происходить переход на страницу с прохождением теста. На странице должна быть кнопка "Составить новый", при клике на которую будет происходить переход на страницу создания. Где ее лучше расположить надо подумать, либо над таблицей где-то сбоку, либо где-то еще. # План имплементации 1. Сделать скелет приложения, подключить нужные библиотеки. 2. Добавить шапку сайта. Можно взять https://v4.mui.com/ru/components/app-bar/ или другой подходящий компонент. Я думаю, что в шапке будут 2 ссылки: на страницу списка тестов и списка вопросов. 3. Страница списка тестов **/quizzes** 1. Добавить таблицу (без колонки с действиями) и кнопку создания нового теста. 2. Сделать модуль, который будет отвечать за отправку запросов на бэкенд. Либо можно посмотреть на популярную библиотеку react-query https://react-query.tanstack.com/ Для получения опыта конечно предпочтительнее первый вариант, то есть отправлять запросы с помощью, например, axios 3. Добавить загрузку данных в таблицу с бэкенда 4. Добавить колонку с действиями и поддержать удаление теста 4. Экран списка вопросов 1. Выглядеть должен идентично экрану списка тестов 5. Добавление вопроса 1. Есть 2 варианта: отдельная страница или диалог. Главное чтобы этот компонент можно было переиспользовать на странице создания теста. Юз кейс смотри ниже. 6. Экран создания теста 1. Отдельная страница с формой создания. Юзер может выбрать вопросы из существующих. То есть кликает на кнопку, открывается диалоговое окно внутри которого список вопросов, юзер чекает нужные и нажимает кнопку "добавить". На этом же экране должна быть возможность добавления нового вопроса. Надо выбрать вариант как лучше сделать: отдельным диалоговым окном или сделать в диалоге кнопку "добавить новый", при клике на которую контент внутри диалога будет подменяться на форму создания нового вопроса. Второй вариант кажется удобнее, но посложнее.