Тренажер JavaScript
Реализуйте тренажер для заучивания JavaScript методов и функций.
Продумайте структуру базы данных для хранения пользователей и вопросов по JavaScript. В коде должен быть заранее подготовлен массив с вопросами (описание функции, правильный ответ и категория). Реализуйте регистрацию и авторизацию пользователей. Настройте серверную часть для работы с API. Все операции должны выполняться через AJAX-запросы без перезагрузки страницы.
Основные возможности проекта
- Регистрация и авторизация пользователей.
- Вывод описания JavaScript функции.
- Инпут для ввода названия функции.
- Проверка ответа с выводом сообщения об ошибке.
- Вопросы в случайном порядке.
- Обратный отсчет времени на прохождение.
- Выбор категории вопросов.
- Запоминание выученных вопросов на сервере.
- Кнопка сброса прогресса.
Регистрация и авторизация
На сайте должна быть реализована регистрация и авторизация пользователей:
- Регистрация - форма с полями: логин, email, пароль.
- Авторизация - форма с полями: логин, пароль.
- Прогресс каждого пользователя сохраняется отдельно.
- Все операции выполняются без перезагрузки страницы.
Главная страница
На странице должны быть размещены:
- Выбор категории (выпадающий список).
- Описание JavaScript функции.
- Инпут для ввода названия функции.
- Кнопка "Проверить".
- Таймер обратного отсчета.
- Прогресс (сколько вопросов пройдено из общего количества).
Категории
Пользователь может выбрать категорию вопросов:
- Математические функции (Math).
- Строковые методы (String).
- Работа с массивами (Array).
- Объекты (Object).
- Работа с датами (Date).
- Все категории.
Вопросы
Вопросы выводятся в случайном порядке. При правильном ответе вопрос считается выученным и сохраняется на сервере. При следующем запуске выученные вопросы не показываются. Если ответ неправильный, выводится сообщение об ошибке, и пользователь может попробовать снова.
Таймер
При начале прохождения запускается таймер обратного отсчета. Время на прохождение - 90 секунд. Таймер отображается на странице. По истечении времени, если пользователь не успел ответить на все вопросы, тренажер считается проваленным и предлагает начать заново.
Сброс прогресса
На странице должна быть кнопка "Сбросить прогресс". При нажатии на нее все выученные вопросы пользователя очищаются на сервере с подтверждением действия.
Завершение
Когда все вопросы в выбранной категории пройдены правильно, тренажер поздравляет пользователя и предлагает пройти заново.
Взаимодействие с сервером
Все операции выполняются через AJAX-запросы:
- При загрузке страницы список вопросов и прогресс пользователя загружаются с сервера.
- При правильном ответе данные о выученном вопросе отправляются на сервер, после успешного ответа обновляется интерфейс.
- При сбросе прогресса данные отправляются на сервер, после успешного ответа обновляется интерфейс.
Дополнительные возможности
- Подсказка (первая буква метода/функции).
- Количество правильных и неправильных ответов.