Вот полный текст из файла **IMG_20260614_233203_809.jpg** один в один, без изменений:
### Курсовой проект: «Терминальный планировщик задач»
#### 1. Общее описание
**Цель проекта:** разработать консольное приложение (CLI) на JavaScript — терминальный планировщик задач с возможностью управления списком дел через командную строку.
**Основные функции:**
* добавление новых задач с указанием параметров;
* просмотр списка задач (с фильтрацией и сортировкой);
* редактирование существующих задач;
* удаление задач;
* сохранение данных в JSON-файле для долговременного хранения;
* загрузка данных из файла при запуске программы.
#### 2. Технические требования
**Язык и среда:** JavaScript (Node.js).
**Используемые конструкции и типы данных:**
* **Массивы** — для хранения списка задач.
* **Объекты** — для представления отдельной задачи со свойствами:
* id (уникальный идентификатор);
* title (название задачи);
* description (описание);
* category (категория: «Учёба», «Дом» и др.);
* dueDate (срок выполнения в формате ISO string);
* isUrgent (флаг срочности, boolean);
* completed (статус выполнения, boolean).
* **Строки** — для ввода/вывода данных, формирования сообщений, работы с путями файлов.
**Взаимодействие с пользователем:**
* консольный интерфейс (CLI) с текстовым меню;
* ввод команд через readline или inquirer;
* вывод списка задач в табличном формате (например, с использованием console.table или форматирования вручную).
**Хранение данных:**
* файл tasks.json в корне проекта;
* при запуске программа читает файл, при изменениях — перезаписывает.
#### 3. Функциональные требования
1. **Добавление задачи:**
* запрос у пользователя: название, описание, категория, срок, срочность;
* автоматическая генерация id;
* сохранение в массив и запись в файл.
2. **Просмотр задач:**
* вывод всех задач или отфильтрованных по:
* категории (--category=Учёба);
* срочности (--urgent);
* статусу (--completed, --pending);
* сортировка по сроку выполнения.
3. **Редактирование задачи:**
* выбор задачи по id;
* изменение любых полей (кроме id);
* обновление в массиве и запись в файл.
4. **Удаление задачи:**
* ввод id задачи;
* удаление из массива и файла.
5. **Сохранение и загрузка:**
* при запуске: чтение tasks.json, если файл существует;
* после каждого изменения: перезапись файла.
6. **Дополнительное:**
* проверка корректности ввода (например, формат даты);
* обработка ошибок (отсутствие файла, неверный id и т. п.);
* приветственное сообщение и инструкция по командам.