Конструктор опросов
Реализуйте сайт, с помощью которого пользователи смогут создавать свои опросы.
Продумайте структуру базы данных для хранения пользователей, опросов, вопросов, вариантов ответов и голосов. Реализуйте регистрацию и авторизацию пользователей. Настройте серверную часть для работы с API. Все операции должны выполняться через AJAX-запросы без перезагрузки страницы.
Основные возможности проекта
- Регистрация и авторизация пользователей.
- Создание опросов с вопросами и вариантами ответов.
- Прохождение опросов (голосование).
- Просмотр результатов голосования в реальном времени.
- Публичные и приватные опросы.
- Все операции выполняются через AJAX без перезагрузки страницы.
Регистрация и авторизация
На сайте должна быть реализована регистрация и авторизация пользователей:
- Регистрация - форма с полями: логин, email, пароль.
- Авторизация - форма с полями: логин, пароль.
- Опросы могут создавать только зарегистрированные пользователи.
Страница создания опроса
На странице создания опроса должны быть:
- Инпут для названия опроса.
- Текстареа для описания опроса.
- Переключатель: публичный или приватный опрос.
- Форма для добавления вопросов - для каждого вопроса:
- Текст вопроса (инпут).
- Варианты ответов (инпуты, можно добавлять/удалять).
- Тип вопроса: одиночный выбор или множественный выбор.
- Кнопка "Добавить вопрос".
- Список добавленных вопросов с возможностью удаления и редактирования.
Список опросов
На странице списка опросов пользователь видит все свои опросы. Для каждого опроса доступны действия:
- Перейти на страницу опроса для прохождения.
- Перейти на страницу редактирования.
- Удалить опрос (с подтверждением).
На главной странице отображаются публичные опросы всех пользователей с пагинацией.
Страница опроса (прохождение)
На странице опроса отображаются:
- Название опроса.
- Описание опроса.
- Список вопросов с вариантами ответов (радиокнопки для одиночного выбора, чекбоксы для множественного).
- Кнопка "Проголосовать".
Принцип работы опроса
При прохождении опроса:
- Пользователь выбирает один или несколько вариантов ответов на каждый вопрос.
- Один пользователь может проголосовать в опросе только один раз (защита от повторного голосования по IP или по сессии).
- После голосования отображаются результаты.
Результаты опроса
После голосования или при просмотре опроса сайт должен выводить:
- Для каждого вопроса - количество голосов за каждый вариант ответа.
- Процентное соотношение голосов.
- Общее количество проголосовавших.
Взаимодействие с сервером
Все операции выполняются через AJAX-запросы:
- При загрузке страницы данные загружаются с сервера.
- При создании, редактировании, удалении опроса или голосовании данные отправляются на сервер, после успешного ответа обновляется интерфейс.
Дополнительные возможности
- Визуализация результатов (диаграммы).
- Экспорт результатов в CSV.