# 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.*