Nodejs-разработка

Присоединяйтесь к нашей программе обучения

Четвёртое задание: Система голосований

Платформа для создания и участия в опросах или голосованиях. Пользователи могут создавать опросы с разными типами вопросов (мультивыбор, одиночный выбор), а другие могут голосовать.

User Flow

1. Регистрация и авторизация пользователя:

Пользователь создает аккаунт, вводя свои данные (имя, email, пароль), после чего получает JWT-токен для дальнейшего доступа к системе.

2. Авторизация пользователя:

Пользователь вводит свои учетные данные для входа, получает JWT-токен и доступ к возможностям платформы (создание и участие в опросах).

3. Создание опроса:

Авторизованный пользователь может создать новый опрос, заполнив название, описание, вопросы и варианты ответов. Опрос сохраняется в базе данных и становится доступным для других пользователей.

4. Просмотр списка опросов:

Пользователи могут просматривать список всех доступных опросов с краткой информацией о каждом из них.

5. Участие в опросе:

Пользователь выбирает опрос, отвечает на вопросы и отправляет свои ответы. После отправки ответы сохраняются в базе данных, и статистика обновляется.

6. Просмотр результатов опроса:

Пользователь может в любое время просмотреть результаты опроса в реальном времени — текущее распределение голосов по вариантам ответа.

7. Управление своими опросами:

Авторизованный пользователь может просматривать созданные им опросы, редактировать их или закрывать для дальнейшего участия.

8. Завершение опроса:

Владелец опроса может завершить опрос, сделав его неактивным для участия, и опрос больше не будет отображаться в списке доступных.

Требования

  • Проект должен быть разработан с использованием Nest.js фреймворка и TypeORM. В качестве базы данных используется PostgreSQL.

  • Параметры подключения к базе данных, а также другие конфигурационные параметры (например, порты сервера) должны настраиваться через файл конфигурации и могут быть изменены без изменений в коде.

  • Необходимо протестировать логику всех эндпоинтов. Тесты должны охватывать успешные результаты, а также случаи с ошибками.

  • Необходимо логировать ошибки, возникающие при взаимодействии с базой данных и в ходе работы API.

  • Проект должен содержать набор скриптов или Postman-коллекцию с запросами для тестирования эндпоинтов.

  • Должна быть реализована документация API с использованием Swagger.

  • Файл README.md должен содержать краткое описание проекта и инструкцию по запуску и тестированию проекта.

Подсказки и ресурсы

Для написания проекта понадобятся следующие теоретические знания:

менеджер программы обучения

По любым вопросам по программе обучения пишите Светлане в Telegram