family-games-v3/PRD.md
2026-06-26 06:49:42 +00:00

285 lines
18 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# PRD — Семейные игры (каталог для всей семьи)
**Версия:** 3.0
**Дата:** 26 июня 2026
**Платформа:** статический лендинг (HTML + CSS + JS)
**URL:** https://pages.git.vibe42.kz/Yuliya/family-games-v3/
**Репозиторий:** https://git.vibe42.kz/Yuliya/family-games-v3
---
## 1. Описание продукта
**«Семейные игры»** — одностраничный каталог игр и активностей для семейного времяпрепровождения. Помогает семье быстро найти, во что поиграть вместе: по сезону, по категории, по возрасту ребёнка. Включает готовые загадки, шарады и сценарии для больших компаний (праздники, дни рождения).
Продукт решает проблему «не знаем, чем заняться всей семьёй» и подбирает активности так, чтобы было интересно одновременно и трёхлетнему ребёнку, и родителям, и взрослому ребёнку, и даже кошкам.
---
## 2. Цели и задачи
### Цели
- **G1.** Дать семье единый источник идей для совместного досуга — без поиска в интернете каждый раз.
- **G2.** Подобрать игры, которые развивают ребёнка 3 лет и одновременно интересны взрослым (43, 44, 22 года).
- **G3.** Покрыть все сезоны и типы активности (улица, настольные, развивающие, компьютерные, прочие).
- **G4.** Обеспечить мгновенный доступ с любого устройства, в первую очередь с телефона.
### Задачи (внутри продукта)
- Каталог игр с фильтрами и поиском.
- Группировка игр по сезонам года.
- Подборка игр, доступных 3-летнему ребёнку.
- Раздел «шарады и загадки» для устных игр без подготовки.
- Раздел для больших компаний (торжества, дни рождения).
- Функция «Сюрприз» — случайная игра, когда не могут выбрать.
---
## 3. Целевая аудитория
### Основная семья (пользователи продукта)
| Член семьи | Возраст | Роль в играх |
|------------|---------|--------------|
| Папа | 43 года | Ведущий, организатор, партнёр в настольных и компьютерных |
| Мама | 44 года | Наставник малыша, кулинарные и развивающие активности |
| Взрослый ребёнок | 22 года | Партнёр в компьютерных и сложных настольных, помощь с малышом |
| Малыш | 3 года | Главный участник развивающих и подвижных игр |
| 2 кошки | молодые, игривые | Участники «кошачьих» активностей 🐱 |
### Дополнительная аудитория
- Гости на праздниках и днях рождения (6+ человек) — для раздела «Большая компания».
### Ключевые потребности
- Игры должны быть **доступны 3-летке** (упрощённые правила, помощь взрослых).
- Игры должны быть **не скучны взрослым** (есть слой стратегии/юмора).
- Минимум подготовки — играть «здесь и сейчас».
---
## 4. Пользовательские сценарии
**Сценарий 1 — «Вечер пятницы, не знаем чем заняться».**
Пользователь открывает сайт на телефоне → нажимает «🎲 Сюрприз» → получает случайную игру с описанием → семья играет.
**Сценарий 2 — «Зима, хочется на улицу».**
Пользователь открывает «📅 По сезонам» → раздел «❄️ Зима» → выбирает игру (например, «Снежинки под лупой») → читает «как играть» и «что развивает».
**Сценарий 3 — «Чем занять 3-летку».**
В каталоге включается фильтр «👶 Для 3-летки» → остаются только игры 2+/3+ → родитель выбирает подходящую.
**Сценарий 4 — «День рождения, пришли гости».**
Открывается раздел «🎂 Для большой компании» → выбирается сценарий (квест по станциям, квиз, фотобудка) для 620 человек.
**Сценарий 5 — «Устная игра без подготовки».**
Открывается «🤔 Шарады и загадки» → семья по очереди открывает карточки и угадывает ответы.
---
## 5. Структура продукта
Одна страница, прокрутка вниз. Секции:
1. **Header (липкий)** — лого «🎲 Семейные игры» + кнопка «🎲 Сюрприз».
2. **Hero** — заголовок, описание, бейджи состава семьи, кнопки навигации по разделам.
3. **Каталог игр** (`#catalog`) — фильтры + сетка карточек игр.
4. **Игры по сезонам** (`#seasons`) — игры, сгруппированные по 5 временам года.
5. **Шарады и загадки** (`#riddles`) — интерактивные карточки с ответами.
6. **Для большой компании** (`#big`) — витрина игр для 6+ человек.
7. **Footer**.
---
## 6. Функциональные требования
### 6.1. Каталог игр
- **Фильтр по категории:** Все / 🌳 На улице / ♟️ Настольные / 🧠 Развивающие / 💻 Компьютерные / ✨ Прочие.
- **Фильтр по сезону:** В любое время / 🌸 Весна / ☀️ Лето / 🍂 Осень / ❄️ Зима.
- **Фильтр по возрасту:** Все возраста / 👶 Для 3-летки (показывает только игры с возрастом 2+ или 3+).
- **Текстовый поиск** по названию игры.
- **Кнопка «Сбросить»** — обнуляет все фильтры.
- **Счётчик «Найдено игр: N»** — обновляется при фильтрации.
- **Пустое состояние** — если ничего не найдено, показывается подсказка сбросить фильтры.
### 6.2. Карточка игры
Каждая карточка содержит:
- Эмодзи-иконка.
- Чип категории (с цветом категории).
- Название.
- Метаданные: сезон, 👥 количество игроков, 🎂 возраст.
- Описание «как играть» (24 предложения).
- Блок «🎯 Развивает: …» — какие навыки развивает (особенно важно для развивающих и игр малыша).
### 6.3. Игры по сезонам
- 5 групп с заголовками: 🌸 Весна / ☀️ Лето / 🍂 Осень / ❄️ Зима / 🔄 В любое время.
- В каждой группе — счётчик количества игр.
- Сетка карточек внутри группы (та же карточка, что в каталоге).
### 6.4. Шарады и загадки
- **Подраздел «Загадки»** — карточки с текстом загадки; клик по карточке открывает ответ.
- **Подраздел «Шарады»** — карточки с частями слова; клик открывает ответ-слово.
- Состояние «ответ скрыт / показан» переключается повторным кликом.
### 6.5. Для большой компании
- Витрина из 6 сценариев для 6+ человек (Мафия, Крокодил, Музыкальные стулья, Семейный квиз, Квест по станциям, Фотобудка).
- Карточки с описанием и «что развивает».
- Без фильтров (статичная витрина).
### 6.6. «Сюрприз» (модальное окно)
- Кнопка в header и доступна с любой точки страницы.
- Открывает модал со случайной игрой из текущей отфильтрованной выборки (или из всех, если фильтры пусты).
- Внутри модала: кнопка «🎲 Другая игра» (новый случайный выбор) и «Закрыть».
- Закрытие: клик по фону, кнопка «Закрыть», клавиша Escape.
---
## 7. Контент
### 7.1. Каталог игр (≈44 игры)
Распределение по категориям:
- 🌳 На улице — 19 игр (по всем сезонам).
- ♟️ Настольные — 5 игр.
- 🧠 Развивающие — 12 игр.
- 💻 Компьютерные — 4 игры.
- ✨ Прочие — 4 игры.
### 7.2. Загадки — 20 штук
- 15 простых для малыша 3+ (животные, предметы, природа).
- 5 логических для взрослых и 22-летнего.
### 7.3. Шарады — 6 штук
На сложение слов: ПАР+УС=ПАРУС, БАР+СУК=БАРСУК, ЛИСТ+ПАД=ЛИСТОПАД, САМ+ЛЁТ=САМОЛЁТ, ПАР+ВОЗ=ПАРОВОЗ, ЛЁД+КОЛ=ЛЕДОКОЛ.
### 7.4. Большая компания — 6 сценариев
Мафия, Крокодил/Шарады, Музыкальные стулья, Семейный квиз, Квест по станциям, Фотобудка + челленджи.
---
## 8. Нефункциональные требования
### 8.1. Адаптивность
- Mobile-first. Корректно отображается на телефоне (от 320px), планшете и десктопе.
- Сетка карточек: 1 колонка на телефоне, 2 на планшете, 3 на десктопе (`repeat(auto-fill, minmax(290px, 1fr))`).
- Hero-заголовок уменьшается на мобиле (48px → 33px).
### 8.2. Производительность
- Один файл `index.html` (HTML + CSS + JS inline), без внешних зависимостей и сборщиков.
- Без тяжёлых библиотек (никакого Bootstrap, jQuery, npm-зависимостей).
- Мгновенная загрузка и работа офлайн после открытия.
### 8.3. Доступность и удобство
- Крупные тап-зоны (чипы, карточки, кнопки).
- Контрастный текст, читаемые шрифты системного стека.
- Эмодзи как иконки (не требуют шрифтовых загрузок).
### 8.4. Браузеры
- Современные браузеры с поддержкой CSS custom properties и grid (все актуальные Chrome/Safari/Firefox/Edge).
---
## 9. Технологический стек
| Слой | Технология |
|------|------------|
| Разметка | HTML5 |
| Стили | CSS3 (inline, custom properties, grid, media queries) |
| Логика | Vanilla JavaScript (ES6+, template literals) |
| Данные | Встроенные JS-массивы (GAMES, RIDDLES, CHARADES, BIG) |
| Сборка | отсутствует |
| Хостинг | Gitea Pages (ветка `pages`), обслуживается Caddy |
| Контроль версий | Git, self-hosted Gitea на git.vibe42.kz |
**Ограничения платформы (песочница Vibe42):**
- Только статика. Никакого бэкенда, БД, аутентификации, Docker, сборщиков.
- Публикация — push/загрузка файлов в ветку `pages` репозитория Gitea.
---
## 10. Дизайн-система
### Палитра (тёплая, дружелюбная)
| Token | Hex | Назначение |
|-------|-----|------------|
| `--bg` | `#FFF9F0` | Основной фон (кремовый) |
| `--ink` | `#2A2530` | Основной текст (тёмный тёплый) |
| `--card` | `#FFFFFF` | Фон карточек |
| `--muted` | `#7A7382` | Вторичный текст |
| `--line` | `#EEE6D8` | Границы, сепараторы |
| `--accent` | `#FF6B5B` | Основной акцент (коралл) |
| `--accent-soft` | `#FFE7E2` | Мягкий фон акцента |
| `--accent2` | `#2EC4B6` | Вторичный акцент (бирюза) |
| `--accent2-soft` | `#DDF6F3` | Мягкий фон бирюзы |
| `--gold` | `#FFB627` | Декоративный |
### Цвета категорий
- На улице `#5BBF8A` · Настольные `#8B6FD0` · Развивающие `#FF9149` · Компьютерные `#4A90E2` · Прочие `#E85A8C` · Большая компания `#F2A900`
### Типографика
- Шрифт: системный стек `-apple-system, BlinkMacSystemFont, "Segoe UI", Inter, system-ui, sans-serif`.
- h1 (hero) — 48px / 800 (мобила 33px); h2 (секции) — 3034px / 800; h3 (карточки) — 19px / 800; body — 17px / 400.
### Лейаут
- Контейнер `max-width: 1140px`.
- Карточки `border-radius: 1618px`, кнопки и чипы — `8999px`.
---
## 11. Метрики успеха
- **M1.** Все запланированные разделы (5 шт.) присутствуют и работают.
- **M2.** Каталог содержит ≥ 40 игр, из них ≥ 15 доступных 3-летке.
- **M3.** Все фильтры (категория, сезон, возраст, поиск) корректно фильтруют и сбрасываются.
- **M4.** Страница открывается на телефоне без горизонтального скролла.
- **M5.** Время до полной интерактивности < 1 сек (один файл, без внешних запросов).
---
## 12. Roadmap (что можно добавить)
### Ближайшее (P1)
- Картинки/иллюстрации к играм (плейсхолдеры или эмодзи-сцены).
- Фильтр «по количеству игроков» (2 / 34 / 5+).
- Возможность «сохранить» любимые игры (localStorage, без бэкенда).
- Печатная версия карточек (печать выбранного набора).
### Среднесрочное (P2)
- Больше загадок и шарад (по темам: про кошек, про еду, про транспорт).
- Режим «счётчик очков» для большой компании (квиз, шарады по командам).
- Звуковые эффекты / анимации для малыша.
- Генератор «план выходного дня» подборка 3 игр на сезон.
### Долгосрочное (P3)
- Многоязычность (русский / казахский / английский).
- Загрузка собственных игр семьёй через редактор (localStorage).
- PWA-установка на телефон как приложение.
---
## 13. Известные ограничения и риски
- **Публикация через Gitea API.** `git push` для аккаунта заблокирован pre-receive hook сервера User permission denied»). Обход загрузка файлов через Gitea Contents API напрямую в ветку `pages`. Требует ручного шага при каждом обновлении.
- **Нет редактирования контента пользователем.** Все данные зашиты в `index.html`. Добавление игр требует правки кода.
- **Офлайн-данные.** Нет синхронизации между устройствами каждый открывает свою копию.
- **Эмодзи-рендеринг** зависит от ОС устройства (на старых Windows могут отличаться).
---
## 14. Статус реализации
| Раздел | Статус |
|--------|--------|
| Hero + навигация | Готово |
| Каталог с фильтрами (категория/сезон/возраст/поиск) | Готово |
| Карточка игры (как играть + что развивает) | Готово |
| Игры по сезонам | Готово |
| Фильтр «Для 3-летки» | Готово |
| Шарады и загадки | Готово |
| Для большой компании | Готово |
| «Сюрприз» (модал) | Готово |
| Адаптив под телефон | Готово |
| Публикация на Pages | Готово (через API) |
| Картинки к играм | Не сделано (roadmap P1) |
| Сохранение избранного | Не сделано (roadmap P1) |
---
*Документ сформирован на основе реализованного продукта. Обновлять при добавлении разделов из roadmap.*