Nodejs-разработка
Присоединяйтесь к нашей программе обучения
Четвёртое задание: Система голосований
Платформа для создания и участия в опросах или голосованиях. Пользователи могут создавать опросы с разными типами вопросов (мультивыбор, одиночный выбор), а другие могут голосовать.
User Flow
1. Регистрация и авторизация пользователя:
Пользователь создает аккаунт, вводя свои данные (имя, email, пароль), после чего получает JWT-токен для дальнейшего доступа к системе.
2. Авторизация пользователя:
Пользователь вводит свои учетные данные для входа, получает JWT-токен и доступ к возможностям платформы (создание и участие в опросах).
3. Создание опроса:
Авторизованный пользователь может создать новый опрос, заполнив название, описание, вопросы и варианты ответов. Опрос сохраняется в базе данных и становится доступным для других пользователей.
4. Просмотр списка опросов:
Пользователи могут просматривать список всех доступных опросов с краткой информацией о каждом из них.
5. Участие в опросе:
Пользователь выбирает опрос, отвечает на вопросы и отправляет свои ответы. После отправки ответы сохраняются в базе данных, и статистика обновляется.
6. Просмотр результатов опроса:
Пользователь может в любое время просмотреть результаты опроса в реальном времени — текущее распределение голосов по вариантам ответа.
7. Управление своими опросами:
Авторизованный пользователь может просматривать созданные им опросы, редактировать их или закрывать для дальнейшего участия.
8. Завершение опроса:
Владелец опроса может завершить опрос, сделав его неактивным для участия, и опрос больше не будет отображаться в списке доступных.
Требования
Проект должен быть разработан с использованием Nest.js фреймворка и TypeORM. В качестве базы данных используется PostgreSQL.
Параметры подключения к базе данных, а также другие конфигурационные параметры (например, порты сервера) должны настраиваться через файл конфигурации и могут быть изменены без изменений в коде.
Необходимо протестировать логику всех эндпоинтов. Тесты должны охватывать успешные результаты, а также случаи с ошибками.
Необходимо логировать ошибки, возникающие при взаимодействии с базой данных и в ходе работы API.
Проект должен содержать набор скриптов или Postman-коллекцию с запросами для тестирования эндпоинтов.
Должна быть реализована документация API с использованием Swagger.
Файл README.md должен содержать краткое описание проекта и инструкцию по запуску и тестированию проекта.
Подсказки и ресурсы
Для написания проекта понадобятся следующие теоретические знания:
1. Nest.js framework
2. TypeORM