Nodejs-разработка
Присоединяйтесь к нашей программе обучения
Третье задание: Таск-менеджер для команды
Создание API-сервиса для управления задачами внутри команды. Пользователи могут создавать проекты, добавлять задачи с привязкой к проектам, назначать исполнителей, менять статусы задач, и просматривать результаты работы. Это задание реализуется на базе Express, Prisma и PostgreSQL, с REST-архитектурой и поддержкой CRUD операций.
User Flow
1. Регистрация пользователя:
Пользователь отправляет запрос на регистрацию (с именем и email).
Получает ID и токен для последующих действий.
2. Создание проекта:
Пользователь отправляет запрос для создания проекта.
В теле запроса: название проекта и краткое описание (опционально).
Проект сохраняется в базе данных с привязкой к пользователю.
3. Добавление задачи в проект:
Пользователь отправляет запрос для создания задачи в определенном проекте.
В теле запроса: название задачи, описание (опционально), и срок выполнения.
Задача сохраняется в базе данных с привязкой к проекту.
4. Назначение исполнителя задачи:
Пользователь отправляет запрос на назначение исполнителем конкретной задачи. Назначить себя исполнителем может только тот пользователь, который отправил запрос.
Задача обновляется в БД с привязкой к новому исполнителю.
5. Изменение статуса задачи:
У задачи есть статус "создана", "в процессе", "завершена".
Пользователь отправляет запрос для изменения статуса задачи (например, с «в процессе» на «завершена»). Поменять статус может только исполнитель задачи.
Сервис обновляет статус задачи в базе данных, и если задача завершена, фиксирует в БД время, затраченное на выполнение.
6. Просмотр всех проектов и задач:
Пользователь отправляет запрос для получения списка своих проектов и связанных с ними задач.
В ответе приходит список всех проектов пользователя с краткой информацией по каждой задаче (например, статус и исполнитель).
7. Просмотр времени работы одного разработчика:
Любой пользователь может запросить время работы одного разработчика и отфильтровать по проектам и временным интервалам.
Например:
все проекты за месяц
один проект за последнюю неделю.
8. Просмотр полного времени работы над проектом:
Любой пользователь может запросить общее время работы всех разработчиков над конкретным проектом за указанный период: за всё время, за месяц или за неделю.
Требования
Проект должен быть разработан с использованием Express.js фреймворка и Prisma ORM.
API должно соответствовать архитектуре REST.
Параметры подключения к базе данных, а также другие конфигурационные параметры (например, порты сервера) должны настраиваться через файл конфигурации и могут быть изменены без изменений в коде.
Нужно обеспечить гибкость кода для случая замены или расширения функционала.
Необходимо протестировать следующие флоу: регистрация, создание проекта, создание и изменение задач. Тесты должны охватывать успешные результаты, а также случаи с ошибками, такими как:
При некорректном вводе данных (например, пустое название задачи)
При проблемах с базой данных (например, невозможность подключиться)
При нарушении целостности данных (например, задача привязана к несуществующему проекту)
Необходимо логировать ошибки, возникающие при взаимодействии с базой данных и в ходе работы API.
Проект должен содержать набор скриптов или Postman-коллекцию с запросами для тестирования эндпоинтов.
Файл README.md должен содержать краткое описание проекта и инструкцию по запуску и тестированию проекта.
Подсказки и ресурсы
Для написания проекта понадобятся следующие теоретические знания:
1. Express framework
2. PostgreSQL and SQL
3. Prisma ORM
4. Аутентификация и авторизация
5. Rest API