Спецификация проекта Список дел
В этом проекте мы создадим простой, но очень полезный сервис — Список дел (To‑Do List).
Он позволит добавлять задачи, отмечать выполненные и получать актуальный список.
Такой проект поможет вам закрепить навыки работы с основными узлами, научиться хранить и обрабатывать данные, а также лучше понять, как строить практичные сценарии автоматизации.
Для хранения списка мы будем использовать базу данных MongoDB. У вас появится еще один навык.
Этот проект станет основой для более сложных сценариев, которые мы будем разбирать в следующих главах с использованием AI.
Область применения
Например, вы собираетесь в магазин и заранее добавляете в список покупок: молоко, хлеб, овощи, кофе. Когда что‑то куплено, отмечаете это в списке.
Цель проекта
Создать простой сервис для управления списком дел, который позволяет:
- Добавлять новые задачи
- Редактировать существующие задачи
- Отмечать задачи как выполненные
- Получать актуальный список задач
- Удалять задачи
Сущность Task и ее свойства
В этом проекте мы будем работать с одной сущностью — Task.
Самые необходимые свойства задачи:
_id: уникальный идентификатор задачи (string)title: заголовок задачи (string)completed: статус выполнения задачи (boolean, по умолчаниюfalse)createdAt: дата создания задачи в миллисекундах прошедших с 1 января 1970 года (number)updatedAt: дата последнего обновления задачи в миллисекундах прошедших с 1 января 1970 года (number)
Формат даты
Существуют разные форматы даты, но в этом проекте мы будем использовать timestamp — количество миллисекунд, прошедших с 1 января 1970 года.
Формат timestamp в миллисекундах позволяет легко сравнивать даты и сортировать задачи по времени создания или обновления потому что это просто число.
Создание записи
POST /todo — создать новую задачу
Тело запроса:
{
"title": "Learn JavaScript"
}Ответ: созданная задача с уникальным _id и completed: false.
Пример ответа:
{
"title": "Learn JavaScript",
"complete": false,
"createdAt": 1755060418448,
"_id": "689c18c3003402dd6240a7d7"
}Получение всех записей
GET /todo — получить список всех задач
Ответ: массив всех задач.
Пример ответа:
[
{
"_id": "689c18c3003402dd6240a7d7",
"title": "Learn JavaScript",
"complete": false,
"createdAt": 1755060418448
},
{
"_id": "689c195e003402dd6240a7d8",
"title": "Buy milk",
"complete": false,
"createdAt": 1755060574173
},
{
"_id": "689c195e003402dd6240a7d9",
"title": "Buy bread",
"complete": false,
"createdAt": 1755060574207
},
{
"_id": "689c195e003402dd6240a7da",
"title": "Buy apples",
"complete": false,
"createdAt": 1755060574222
}
]Обновление записи
PATCH /todo — обновить существующую задачу
В теле запроса нужно указать _id задачи, которую нужно обновить, и новые значения свойств title или completed.
Обновление только одного свойства, например, только completed
{
"_id": "689c18c3003402dd6240a7d7",
"completed": true
}Обновление только заголовка задачи:
{
"_id": "689c18c3003402dd6240a7d7",
"title": "Learn JavaScript and Node.js"
}Обновление нескольких свойств сразу:
{
"_id": "689c18c3003402dd6240a7d7",
"title": "Learn JavaScript and Node.js",
"completed": true
}Ответ: обновленная задача.
Пример ответа:
{
"title": "Byu milk and tea",
"complete": false,
"createdAt": 1755060574207,
"updatedAt": 1755062552352
}Добавляется новое свойство updatedAt с текущей датой в формате timestamp.
Удаление записи
DELETE /todo — удалить задачу
Тело запроса:
{
"_id": "66bda1f47f3d2c001e3c1b23"
}Ответ: сообщение об успешном удалении.
Пример ответа:
[
{
"deletedCount": 1
}
]Все запросы на один адрес
Все запросы к сервису будут отправляться на один адрес: /todo.
Различие только в методах HTTP.
Отличие в методах позволяет серверу понять, на кого перенаправить запрос.