From a6a639d75de3762d88b197f400e28b1dce3bce4e Mon Sep 17 00:00:00 2001 From: ashirova_gulnur Date: Fri, 26 Jun 2026 06:48:08 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20PRD=20=D0=BF=D1=80=D0=BE=D0=B4=D1=83?= =?UTF-8?q?=D0=BA=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PRD.md | 186 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100644 PRD.md diff --git a/PRD.md b/PRD.md new file mode 100644 index 0000000..b805dfc --- /dev/null +++ b/PRD.md @@ -0,0 +1,186 @@ +# PRD — Семейный таск-менеджер «Family Tasks» + +**Версия:** 1.2 +**Дата:** 2026-06-26 +**Статус:** реализовано (MVP), итеративно дорабатывается +**Платформа:** статический сайт (HTML + CSS + ванильный JS), без бэкенда + +--- + +## 1. Краткое описание + +Веб-приложение для совместного управления задачами и расписанием внутри семьи. Каждый член семьи заходит под своим именем, видит порученные ему задачи, может ставить задачи другим, планировать личное расписание дня (школа, работа, тренировки) и отслеживать выполнение. + +## 2. Проблема и мотивация + +В семье задачи и договорённости часто теряются: кто за чем должен сходить, кто забрал ребёнка, когда бассейн или школа. Нужен простой общий «список дел» + календарь, где видно занятость каждого. Существующие решения либо перегружены, либо требуют регистрации и серверов. Цель — лёгкий семейный инструмент, который открывается по ссылке и сразу работает. + +## 3. Целевая аудитория + +- Семьи (родители + дети), пользующиеся одним общим устройством (домашний ПК / планшет). +- Любой человек, кому важен результат, а не технические детали. + +**Ключевое ограничение среды:** данные хранятся локально в браузере (localStorage). Приложение оптимально для одного общего семейного устройства, где члены семьи по очереди выбирают своё имя. + +## 4. Цели продукта + +1. Единый семейный аккаунт с перечнем членов семьи. +2. Вход «кто я сейчас» — выбор текущего пользователя без паролей. +3. Постановка задач друг другу с указанием исполнителя, срока, времени, длительности, важности и вида. +4. Жизненный цикл задачи: выполнить / перенести / отменить / вернуть в работу. +5. Личное расписание: свои события-блоки по времени на календаре. +6. Общий обзор: «Мои задачи», «Я поручил», «Все задачи», «Расписание», «Семья». + +## 5. Платформа и ограничения (железные) + +- **Только статика:** HTML + CSS + JS в браузере. Никакого серверного кода. +- **Нет бэкенда, БД, аутентификации, Docker, сборщиков.** +- Хранение: `localStorage` (пер-браузер). Синхронизация между устройствами **не поддерживается** — это сознательное ограничение песочницы. +- «Вход» — это выбор имени из списка членов семьи (локальная идентификация), **не** настоящая аутентификация. +- Публикация: push в ветку `pages` Git-репозитория → сайт доступен мгновенно. + +## 6. Сущности и роли + +- **Семья (family):** название + список членов + задачи + события. +- **Член семьи (member):** id, имя, emoji-аватар, цвет. +- **Текущий пользователь (me):** выбранный член семьи (хранится в sessionStorage-подобном ключе). +- **Задача (task):** см. модель данных. +- **Событие расписания (event):** личный временной блок. + +## 7. Функциональные требования + +### 7.1. Онбординг (первый запуск) +- Если данных нет → экран создания семьи: название + добавление членов (имя, аватар-emoji, цвет). Минимум 1 член. +- Можно добавлять/удалять строки членов до создания. +- После создания — вход под первым членом. + +### 7.2. Вход / смена пользователя +- В шапке аватар + имя текущего пользователя; клик открывает список членов семьи. +- Выбор = «вход» под этим именем; запоминается в браузере. +- Доступен быстрый переход в управление семьёй. + +### 7.3. Управление семьёй +- Переименование семьи. +- Добавление / переименование / удаление членов. +- Смена аватара (emoji + цвет) по клику. +- При удалении члена его задачи остаются «без исполнителя». + +### 7.4. Задачи — поля +| Поле | Описание | Обязательное | +|------|----------|--------------| +| title | что сделать | да | +| note | подробности | нет | +| assigneeId | кому поручено | да | +| assignerId | от кого (автоматически = текущий пользователь) | авто | +| dueDate | срок (дата) | нет | +| time | время срока | нет | +| duration | длительность (15/30/45/60/90/120/180/240/360 мин) | нет | +| category | вид задачи (см. 7.5) | да (по умолч. «Другое») | +| priority | низкая / средняя / высокая | да | +| status | todo / done / postponed / cancelled | авто | +| history | журнал изменений | авто | + +### 7.5. Виды задач (категории) +8 предустановленных категорий с цветом: +🏠 Дом · 💼 Работа · 📚 Учёба · 🛒 Покупки · 👶 Дети · 💰 Финансы · ❤️ Здоровье · 🎉 Другое. +Категория отображается цветным бейджем на карточке и доступна как фильтр в «Все задачи». + +### 7.6. Действия с задачей +- **Выполнить** (✓) → статус done. +- **Вернуть в работу** (↩) → статус todo. +- **Перенести** (📅) → выбор новой даты, статус postponed. +- **Отменить** (✕) → статус cancelled. +- **Редактировать** (✎) → модалка со всеми полями. +- **Удалить** (в модалке) — безвозвратно. +- Каждое действие фиксируется в истории (кто, когда, что). + +### 7.7. Представления (вкладки) +1. **Мои задачи** — активные (todo/postponed), порученные текущему пользователю; сортировка по сроку; счётчик «выполнено за всё время». +2. **Я поручил** — задачи, поставленные текущим пользователем другим. +3. **Все задачи** — общий список с фильтрами: по члену, по статусу, по виду. +4. **Расписание** — календарь месяца + личные события (см. 7.8). +5. **Семья** — карточки членов со статистикой: активных / готово / просрочено / поручено другим. + +### 7.8. Расписание и личные события +- Календарь месяца с ячейками по дням; в ячейках — цветные чипы событий и задач. +- Переключатель **Мои / Вся семья** (фильтрует события и задачи по принадлежности). +- Кнопка **+ Событие** — создание личного временного блока. +- **Событие:** название, дата, время начала, время конца, чьё расписание (владелец), вид/цвет. +- Валидация: конец позже начала; дата и время обязательны. +- Клик по дню → панель дня: таймлайн событий и задач этого дня, отсортированных по времени; кнопка «+ событие в этот день». +- Клик по чипу/строке → редактирование (события или задачи). +- Легенда категорий под календарём. + +### 7.9. Навигация и UX +- Залипающая шапка с навигацией-вкладками, адаптивная (мобильный/десктоп). +- Кнопка «+ Новая задача» всегда доступна. +- Тосты-уведомления о действиях. +- Пустые состояния с подсказками. +- Подсветка просроченных задач. + +## 8. Модель данных (localStorage, ключ `family_tasks_v1`) + +```jsonc +{ + "familyName": "Семья Ивановых", + "members": [{ "id": "m1", "name": "Мама", "color": "#ec4899", "emoji": "👩" }], + "tasks": [{ + "id": "t1", "title": "Купить молоко", "note": "", + "assigneeId": "m1", "assignerId": "m2", + "dueDate": "2026-06-27", "time": "18:00", + "duration": 30, "category": "shop", "priority": "medium", + "status": "todo", "createdAt": 0, "updatedAt": 0, "completedAt": null, + "history": [{ "at": 0, "byId": "m2", "action": "created", "detail": "➕ Создано" }] + }], + "events": [{ + "id": "e1", "title": "Школа", "date": "2026-06-28", + "start": "08:00", "end": "12:00", "ownerId": "m3", "category": "study" + }] +} +``` +Текущий пользователь хранится отдельно в ключе `family_tasks_user`. + +## 9. Нефункциональные требования + +- **Производительность:** мгновенный отклик, рендер по изменению состояния. +- **Надёжность:** отсутствие внешних runtime-зависимостей (стили — локальный CSS, без CDN); обработчик ошибок показывает красную плашку вместо белого экрана. +- **Адаптивность:** корректная работа на телефоне и десктопе. +- **Локализация:** интерфейс на русском; даты/время в формате ru-RU. +- **Приватность:** данные не покидают браузер пользователя. + +## 10. Не входят в скоуп (non-goals) + +- Синхронизация между устройствами / облако. +- Настоящая аутентификация, пароли, роли с правами. +- Уведомления (push/e-mail), интеграции с календарями (Google/Apple). +- Повторяющиеся задачи, подзадачи, вложения, комментарии. +- Мультисемейность (несколько семей в одном браузере). + +## 11. Будущие улучшения (бэклог) + +- Экспорт/импорт данных семьи (JSON-файл) для бэкапа и переноса. +- Повторы задач (ежедневно/еженедельно). +- Напоминания о просрочке на основе времени. +- Тёмная тема. +- Статистика и графики продуктивности по членам/категориям. +- Поиск по всем задачам. +- Перетаскивание задач между днями в календаре. + +## 12. Статус реализации + +| Блок | Статус | +|------|--------| +| Онбординг, создание семьи | ✅ | +| Вход сменой пользователя | ✅ | +| Управление семьёй | ✅ | +| Задачи: CRUD, статусы, действия | ✅ | +| Категории (виды) | ✅ | +| Длительность задачи | ✅ | +| Вкладки: Мои / Я поручил / Все / Семья | ✅ | +| Расписание: календарь + личные события | ✅ | +| Безлимит задач | ✅ | +| Синхронизация между устройствами | ❌ (не планируется в песочнице) | + +--- + +*Документ описывает текущее состояние MVP и направления развития. Приложения «Family Tasks» — учебный проект в статической песочнице Vibe42.*