docs: PRD продукта
This commit is contained in:
parent
c9ef8a852b
commit
a6a639d75d
186
PRD.md
Normal file
186
PRD.md
Normal file
@ -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.*
|
||||||
Loading…
Reference in New Issue
Block a user