vault backup: 2026-04-29 11:56:25

This commit is contained in:
2026-04-29 11:56:25 +03:00
parent 46326befea
commit cb531e403f

View File

@@ -0,0 +1,685 @@
# Smart Home Tablet — Roadmap / идеи развития
> Связанный doc: `smart-home-tablet.md` (reference).
> Приоритеты от «ближайшая сессия» до «эксперименты». Для каждой идеи — что даёт, что нужно от Даниила, сложность (S/M/L), зависимости.
Сложность:
- **S** — 1 сессия (до 2 часов), только код
- **M** — 1-2 сессии, может требовать настройки на стороне
- **L** — 3+ сессий, внешние сервисы / железо / аккаунты
Статус:
- 🟢 готово к работе, всё что нужно — сделать
- 🟡 требует от Даниила что-то купить/настроить/зарегистрироваться
- 🔴 нужно железо или сторонние аккаунты, которых пока нет
---
## 🏡 Своя экосистема — самый большой рычаг
Это не «уровень», а **сквозная тема**. У Даниила уже запущены собственные приложения в `/opt/digital-home/`. Дашборд обязан быть их витриной — это сразу делает его уникальным артефактом, невозможным без этой конкретной инфраструктуры.
### A. Habits-app streak widget
**Что даёт**: виджет на Home «сегодня 3/5 привычек» с прогресс-барами. Мотивирует каждое утро смотреть.
**От тебя**: выставить из `habits-app` JSON endpoint `/api/public/today` (или дёргать БД напрямую если контейнеры в одной сети).
**Что нужно мне**: proxy `/api/habits` + виджет.
**Сложность**: S · **Статус**: 🟢
### B. Langlearn прогресс и streak
**Что даёт**: «15-й день подряд · сегодня 12 слов». На выходных — мотив сделать ежедневный минимум.
**От тебя**: endpoint из `langlearn` / `lingua-learn`.
**Что нужно мне**: proxy + виджет с миниатюрой «осталось N новых карточек».
**Сложность**: S · **Статус**: 🟢
### C. Japan-app / trip countdown
**Что даёт**: до поездки в Токио — countdown + чеклист («виза / билеты / hotel / suitcase»). После поездки — галерея.
**От тебя**: API `japan-app` с датами поездки и чеклистом.
**Что нужно мне**: виджет с большими цифрами дней и нижним рядом чеклиста.
**Сложность**: S · **Статус**: 🟢
### D. Pulse balance + текущий месяц
**Что даёт**: «осталось 12k до конца месяца», «накоплено на Токио: 340k / 500k (68%)». Один из самых high-glance виджетов.
**От тебя**: endpoint в `pulse-web` (предположительно уже есть `/api/savings`).
**Что нужно мне**: виджет с прогресс-кольцами.
**Сложность**: S · **Статус**: 🟢 (API `/api/savings` уже есть в проекте как заготовка)
### E. Finance — бюджет и счета к оплате
**Что даёт**: «электричество до 25-го · 1580₽», «интернет завтра». Раз в месяц спасает от пеней.
**От тебя**: `finance` таблица счетов с due date.
**Что нужно мне**: виджет + уведомления overlay в день оплаты.
**Сложность**: S · **Статус**: 🟢
### F. Adventurelog — карта поездок / воспоминания
**Что даёт**: «3 года назад · Прага» с фото — эмоциональный хук, возврат к дашборду.
**От тебя**: endpoint случайной точки из `adventurelog`.
**Что нужно мне**: виджет в screensaver / photo frame режиме.
**Сложность**: S · **Статус**: 🟢
### G. Digest — сводка за день/неделю
**Что даёт**: если у тебя уже крутится проект `digest` (собирающий какие-то ежедневные сводки) — показывать их здесь.
**От тебя**: уточнить что именно `digest` агрегирует.
**Что нужно мне**: виджет с последним дайджестом.
**Сложность**: S · **Статус**: 🟡 (нужно понять что там)
### H. Homelab-api — здоровье всех твоих сервисов
**Что даёт**: маленькая строка в TopBar — «все 18 сервисов OK», при красном — детальный список кто упал.
**От тебя**: endpoint из `homelab-api` со статусом всех docker-контейнеров.
**Что нужно мне**: виджет + фоновый polling.
**Сложность**: S · **Статус**: 🟢
**Почему это важно сделать раньше внешних интеграций**: потому что твоя экосистема — это то, что делает дашборд **твоим**. Погода и трамваи есть у всех. Habits+langlearn+pulse+trip countdown в одном месте — нет ни у кого. Это отличает «очередной дашборд» от «артефакта твоей жизни».
---
## 🎯 Уровень 1 — ближайшие 2-3 сессии
### 1. PWA standalone + Fully Kiosk Browser
**Что даёт**: планшет выглядит как нативное приложение — fullscreen, auto-wake от движения, защита от выхода, иконка на home screen, без адресной строки.
**От тебя**: установить FKB на планшет по инструкции `smart-home-tablet-fkb-setup.md`. Опционально купить FKB-лицензию €7 (снимает watermark, открывает Remote Admin).
**Что нужно сделать мне**: добавить `manifest.json` + service worker (offline fallback) в Next.js; apple-touch-icon.
**Сложность**: S · **Статус**: 🟢
### 2. WebSockets Home Assistant вместо polling
**Что даёт**: мгновенные обновления состояний устройств. Сейчас polling каждые N секунд — пропуск событий и лишняя нагрузка.
**От тебя**: ничего (long-lived token у тебя уже есть).
**Что нужно мне**: переписать `hooks/useHA.ts` на WebSocket API HA (`/api/websocket`), subscribe_events + get_states initial. Fallback на polling если WS не поднялся.
**Сложность**: M · **Статус**: 🟢
### 3. Яндекс.Станция виджет
**Что даёт**: видишь что играет, контроль громкости, таймеры Алисы на планшете.
**От тебя**: у тебя уже есть Станция Лайт/Мини? Если да — добавить [AlexxIT/YandexStation](https://github.com/AlexxIT/YandexStation) интеграцию в Home Assistant (требует логин в Я.Аккаунт через HACS).
**Что нужно мне**: виджет `<YandexStationCard />` на Home: текущий трек, пилюли «громкость /+», «пауза», таймеры. Через HA entities `media_player.yandex_station_*`.
**Сложность**: M · **Статус**: 🟡 зависит от того, есть ли Станция в HA
### 4. Утренний режим (morning briefing)
**Что даёт**: с 7:00 до 10:00 Home показывает другую раскладку — большое «что надеть» (температура + рекомендация «+2°C лёгкая куртка»), walking-time до трамвая с пометкой «успеешь/бежать», события на сегодня.
**От тебя**: ничего.
**Что нужно мне**: условный рендер `<MorningHomeTab />` по часу, логика одевалки (температура + осадки + ветер → текст), кэш walking-time (Google/OSRM API или хардкод).
**Сложность**: S · **Статус**: 🟢
### 5. Shared shopping list через Telegram-бот
**Что даёт**: Света со своего телефона пишет боту `/add молоко` — пункт появляется в списке на планшете. Замыкает семейный use case.
**От тебя**:
- Создать Telegram-бота через @BotFather, получить token (~2 минуты)
- Создать чат «Семья» с ботом и Светой
**Что нужно мне**:
- Endpoint `/api/telegram/webhook` → парсит сообщения, дёргает `/api/notes` PUT
- Скрипт установки webhook на старте контейнера
- Разделение списков per-user (или общий «семейный»)
**Сложность**: M · **Статус**: 🟡
### 6. Выбор остановок транспорта из UI
**Что даёт**: в Settings выбираешь остановки по поиску названия — избавляешься от хардкода `16226`/`16354`. Поддержка N остановок.
**От тебя**: ничего.
**Что нужно мне**:
- Cron в `/api/transport/feed` — раз в неделю скачивает GTFS, парсит `stops.txt`
- Endpoint `/api/transport/search?q=названия`
- UI в Settings: поиск + список избранных
- Сохранение в `/data/tablet-config.json`
**Сложность**: M · **Статус**: 🟢
### 7. Контекстные подсказки
**Что даёт**: в углу TopBar маленький бар с «Дождь к 15:00, не забудь зонт», «Света выехала с работы — будет через 20 мин», «ДР Светы через 3 дня».
**От тебя**: ничего критичного. Для «Света едет домой» — мобильное HA-приложение на её телефоне с device_tracker.
**Что нужно мне**: rules-engine, комбинирующий погоду / календарь / HA device trackers. Приоритизация (один бар = одна самая важная подсказка).
**Сложность**: M · **Статус**: 🟡 (для геолокации)
### 7b. Cooking mode
**Что даёт**: отдельный полноэкранный режим для готовки. Scroll-lock (экран не гаснет), шрифт крупный (24-28px), таймеры всегда видны, один рецепт на экране. Активируется кнопкой «Готовлю» с Home или автоматически когда идёшь к Я.Станции на кухне (если Света где-то настроит).
**От тебя**: ничего. Опционально — база рецептов (можно потом).
**Что нужно мне**:
- `/cooking` route с отдельным layout
- Wake Lock API (`navigator.wakeLock`) — экран не засыпает
- Крупные таймеры, голосовое «окей, +5 минут» опционально
**Сложность**: M · **Статус**: 🟢
### 7c. Service Worker + offline fallback + состояние между релоадами
**Что даёт**: при отвале WiFi приложение не белеет, а показывает последние данные. Плюс сохранение последней активной вкладки, фильтров календаря, выбранной остановки — чтобы F5 не сбрасывал контекст.
**От тебя**: ничего.
**Что нужно мне**: SW с stale-while-revalidate для API, persistent zustand store в `localStorage`.
**Сложность**: M · **Статус**: 🟢
---
## 🔜 Уровень 2 — ближайший месяц
### 8. Walking-time до остановок (для утреннего режима)
**Что даёт**: «ближайший 23-й через 4 мин, до остановки 6 мин — не успеешь». Приоритизация маршрутов.
**От тебя**:
- Примерные координаты дома (или точный адрес)
- Опционально OpenRouteService API key (бесплатный)
**Что нужно мне**: fetch к OSRM / ORS, кэш в `/data/walking-times.json`.
**Сложность**: S · **Статус**: 🟡
### 9. Meal planner (меню на неделю)
**Что даёт**: планировщик еды: 7 ячеек × (завтрак/обед/ужин), совместное редактирование, из шаблонов.
**От тебя**: сформулировать формат — какие блюда в ротации, кто готовит.
**Что нужно мне**:
- `/api/meals/route.ts` + storage в `/data/meals.json`
- Отдельная вкладка «Меню» или интеграция в Notes
- Сгенерировать shopping list из выбранных блюд (links между meals и ingredients)
**Сложность**: L · **Статус**: 🟢
### 10. Рецепты из продуктов (Claude API)
**Что даёт**: вводишь «что есть в холодильнике» → Claude предлагает 3 рецепта.
**От тебя**:
- Anthropic API key (личный, ~€5 депозита = ~500 запросов)
- Положить в `tablet.env` как `ANTHROPIC_API_KEY`
**Что нужно мне**: `/api/recipes/route.ts` с prompt caching (история ингредиентов), UI-форма.
**Сложность**: S · **Статус**: 🟡
### 11. Семейная геолокация (Даниил / Света)
**Что даёт**: маленькая пилюля «Света · 15 мин до дома / на работе / неизвестно». Триггеры для подсказок («Света едет» → поставь чайник).
**От тебя**:
- Установить **Home Assistant Companion App** на телефон Даниила и Светы
- В HA настроить device_tracker + zones (Дом, Работа)
- Договориться что это ок для Светы (privacy check)
**Что нужно мне**: виджет в TopBar или маленький бар на Home, читает `device_tracker.*` из HA.
**Сложность**: S (код) + M (настройка HA) · **Статус**: 🟡
### 12. Быстрые кнопки на Home (Quick Actions)
**Что даёт**: «Новая заметка», «Таймер 10 мин», «Выключить свет везде», «Чайник» — одним тапом с главной.
**От тебя**: сформулировать какие именно кнопки тебе нужны (реально нужны в быту).
**Что нужно мне**: конфиг `QUICK_ACTIONS` с иконкой + onClick (может звать HA scene, открывать модалку, etc.).
**Сложность**: S · **Статус**: 🟢
### 13. Таймеры (кухонные)
**Что даёт**: «чайник 5 мин», «паста 9 мин» — старт с Home, визуальный отсчёт, звук по окончании.
**От тебя**: ничего. Опционально — разрешить звук в FKB (Settings → Audio).
**Что нужно мне**: компонент `<Timer />` с state в `/data/tablet-timers.json` (чтобы пережил F5), WebAudio для звука.
**Сложность**: S · **Статус**: 🟢
### 14. Напоминалки (лекарства / витамины / полив цветов)
**Что даёт**: «Прими витамин D», «Полей монстеру». Чекбоксы истории — кликаешь «принял», пропадает.
**От тебя**: сформулировать что напоминать и когда.
**Что нужно мне**:
- `/api/reminders/route.ts` + storage
- Cron-like schedule в UI (ежедневно в 10:00, каждые 3 дня, etc.)
- Показ активных напоминалок на Home
**Сложность**: M · **Статус**: 🟢
### 15. Счётчик дней / countdown
**Что даёт**: «До отпуска Токио 47 дней», «ДР Светы через 5 дней», «Последний трамвай 23 через 3 часа».
**От тебя**: список событий с датами.
**Что нужно мне**: виджет `<Countdown />`, конфиг в `/data/tablet-countdowns.json`, UI в Settings.
**Сложность**: S · **Статус**: 🟢
### 16. Swipe-жесты вкладок
**Что даёт**: свайп между Home/Devices/Calendar/Notes/Settings влево-вправо.
**От тебя**: ничего.
**Что нужно мне**: framer-motion drag на `<main>`, snap к соседним вкладкам.
**Сложность**: S · **Статус**: 🟢
### 17. Bill / subscription tracker
**Что даёт**: «электричество до 25-го · 1580₽», «YouTube Premium завтра», «интернет через 3 дня». Маленький виджет, огромная польза — раз в месяц спасает от пеней.
**От тебя**: список своих счетов с датами и суммами, либо интеграция с `finance` проектом.
**Что нужно мне**: `/api/bills/route.ts` с JSON-хранилищем, UI в Settings для ввода, виджет-бар + overlay-alert в день оплаты.
**Сложность**: S · **Статус**: 🟢
### 18. Expense capture по фото чека
**Что даёт**: сфоткал чек в магазине → OCR вытаскивает сумму / магазин / дату → автоматически в pulse / finance. Убирает ежедневное «надо записать, а я забыл».
**От тебя**:
- [Tesseract.js](https://tesseract.projectnaptha.com/) (бесплатно, в браузере) **или** Claude API с vision (~€0.01/чек)
- Разрешить камеру FKB (уже должно быть)
**Что нужно мне**: UI-кнопка «сфоткать чек» → фото → OCR/AI → preview → подтверждаешь → сохраняется. Интеграция с pulse.
**Сложность**: M · **Статус**: 🟡
### 19. Photo frame режим
**Что даёт**: отдельный режим (не screensaver!) — когда в квартире никого, **слайдшоу семейных фото** с подписью «5 лет назад, Прага». Эмоциональный возвратный хук.
**От тебя**: у тебя Nextcloud уже развёрнут в `/opt/digital-home/nextcloud/` — достать папку с фото через WebDAV. Альтернатива — Google Photos (ограничен последним годом).
**Что нужно мне**:
- `/api/photos/random` → достаёт случайное фото
- `<PhotoFrame />` как альтернативный screensaver после 20+ мин бездействия
- Плавный fade между фото, минималистичная подпись с датой
**Сложность**: M · **Статус**: 🟡 (нужно расчехлить Nextcloud API)
> Пункт «Offline mode / Service Worker» объединён с 7c выше.
---
## 🗓 Уровень 3 — средний срок (1-3 месяца)
### 18. Telegram bridge (ответы с планшета)
**Что даёт**: приходит сообщение → уведомление на планшете → можно ответить оттуда.
**От тебя**:
- Отдельный Telegram-аккаунт для планшета **или** Bot API (тогда только в чат с ботом)
- Либо userbot (MTProto) — сложнее, но отвечает от твоего имени (риск бана аккаунта при нарушении ToS)
**Что нужно мне**: pyrogram/gramJS клиент как микросервис + WS в приложение.
**Сложность**: L · **Статус**: 🟡
### 19. Виджет задач Vikunja
**Что даёт**: чеклист задач на сегодня с галочками. API `/api/tasks` уже есть.
**От тебя**: сказать какой список в Vikunja считать «на сегодня» (projectId).
**Что нужно мне**: подключить `/api/tasks` к виджету на Home, синхронизация.
**Сложность**: S · **Статус**: 🟢
### 20. Виджет накоплений Pulse
**Что даёт**: прогресс-бары финансовых целей («Токио: 68% · 340k / 500k»).
**От тебя**: ничего, API уже готов.
**Что нужно мне**: виджет + интеграция.
**Сложность**: S · **Статус**: 🟢
### 21. Камеры наблюдения
**Что даёт**: превью камер во дворе / подъезде (если есть). При звонке в дверь — снапшот overlay.
**От тебя**:
- IP-камеры в доме (RTSP-стрим) — у тебя есть?
- Настройка Frigate / WebRTC-моста в HA
**Что нужно мне**: iframe с Frigate стримом или webrtc-card интеграция.
**Сложность**: L · **Статус**: 🔴 нужно железо
### 22. Doorbell + motion detection
**Что даёт**: уведомление «звонок в дверь» с фото. «Пришла посылка» если camera видит курьера.
**От тебя**: умный звонок (Aqara G4 / Ring) или IP-камера у двери + Frigate person detection.
**Что нужно мне**: notification-overlay на весь экран с кнопкой «открыть».
**Сложность**: M (код) + L (железо/настройка) · **Статус**: 🔴
### 23. Медиа-контроль (Spotify / Я.Музыка / Apple Music)
**Что даёт**: что играет на любом устройстве (телефон / колонка / комп) + pause/skip.
**От тебя**:
- Spotify: developer account + client ID (бесплатно)
- Я.Музыка: неофициальное API, ломается иногда
**Что нужно мне**: oauth flow для Spotify, хранение refresh token в `/data/`.
**Сложность**: M · **Статус**: 🟡
### 24. IR-бластер (управление TV / AC)
**Что даёт**: с планшета включить телевизор, поменять канал, кондиционер на +2°C.
**От тебя**: IR-бластер (Broadlink RM4 Pro или Aqara — ~2500₽), настройка в HA с «обучением» пульта.
**Что нужно мне**: UI-пульт в Devices tab.
**Сложность**: M (код) + M (обучение пультов) · **Статус**: 🔴 нужно железо
### 25. Робот-пылесос
**Что даёт**: запустить уборку с планшета, карта уборки.
**От тебя**: пылесос с HA-интеграцией (Xiaomi / Roborock через miio) и настройка в HA.
**Что нужно мне**: кнопка-виджет на Home или вкладке Devices.
**Сложность**: S · **Статус**: 🔴 нужен пылесос
### 26. Энергомониторинг
**Что даёт**: графики потребления за день/неделю. «Сегодня +15% от среднего».
**От тебя**: умный счётчик / умные розетки с watt-meter (Shelly / Aqara).
**Что нужно мне**: интеграция через HA, chart.js.
**Сложность**: M (код) + L (железо) · **Статус**: 🔴
### 27. Трекер посылок
**Что даёт**: «CDEK CN9876 — в городе, завтра на выдачу», «Ozon — курьер в пути».
**От тебя**: копировать трек-номера вручную в UI, либо скрапер сделки/Ozon (API у них приватное, риск бана).
**Что нужно мне**:
- Скорее всего платный [17track.net API](https://api.17track.net/) (€, но универсальный трекинг)
- Либо самопис скраперов (хрупко)
**Сложность**: M · **Статус**: 🟡 (если 17track)
### 28. Курс валют / бензин
**Что даёт**: USD/EUR/₽ маленькой строкой, цена бензина АИ-95 по району.
**От тебя**: ничего.
**Что нужно мне**: ЦБ РФ XML API (бесплатный), цена бензина через открытые источники (скрапер или yandex.ru/maps POI).
**Сложность**: S · **Статус**: 🟢
### 29. Новости (RSS + Telegram каналы)
**Что даёт**: 3 топ-заголовка раз в час из выбранных источников.
**От тебя**: список RSS и/или Telegram-каналов.
**Что нужно мне**: rss-parser lib + Telegram Bot API (Bot может читать public channels).
**Сложность**: M · **Статус**: 🟡
### 29a. Wake word («Окей, планшет»)
**Что даёт**: голосовая активация для рук-занятых ситуаций: «окей планшет, таймер 10 минут», «окей планшет, добавь молоко в список». Меняет способ использования на кухне.
**От тебя**: ничего (работает локально, без облака).
**Что нужно мне**:
- [Porcupine](https://github.com/Picovoice/porcupine) — локальное wake-word detection, бесплатно до 3 wake-words
- После триггера — Web Speech API для следующей команды
- Маппинг команд: «таймер N минут» → запустить таймер, «добавь X в список» → call API
**Сложность**: L · **Статус**: 🟡
### 29b. Guest mode с WiFi QR
**Что даёт**: приходят гости → кнопка «Режим гостей» → большой QR с паролем гостевой WiFi + часы/погода, без PIN, без твоих данных. Маленький ритуал, но работает каждый раз.
**От тебя**:
- Гостевая WiFi-сеть на роутере (MikroTik/Keenetic — 5 минут)
- QR-код хранишь как SVG в настройках
**Что нужно мне**: `/guest` route без middleware + отдельный layout.
**Сложность**: S · **Статус**: 🟡
### 29c. Health / Sleep integration
**Что даёт**: «вчера спал 6ч 20м, восстановление 62%», «сегодня 8k шагов». Если пересыпание или много ходьбы — подсветка в утреннем режиме (кофе / «молодец»).
**От тебя**: фитнес-трекер с HA интеграцией:
- Mi Band + [Gadgetbridge](https://gadgetbridge.org/) на Android-хабе
- **или** Fitbit через [HA Fitbit integration](https://www.home-assistant.io/integrations/fitbit/) (OAuth)
- **или** Apple Health → через [Homebridge](https://homebridge.io/) сложно, только через iOS shortcut
**Что нужно мне**: виджет «сон и активность» на Home, подсветка в morning mode.
**Сложность**: M (код) + M (настройка) · **Статус**: 🟡
---
## 🧪 Уровень 4 — эксперименты (когда захочется)
### 30. Scanner штрих-кодов для shopping list
**Что даёт**: планшет сканирует штрих-код товара → добавляет в список. Запоминает «4606036017412 = молоко».
**От тебя**: разрешить камеру в FKB.
**Что нужно мне**: `@zxing/library` WebAssembly barcode reader, локальный словарь штрих-кодов.
**Сложность**: M · **Статус**: 🟢
### 31. QR выгрузка списка покупок на телефон
**Что даёт**: в списке есть кнопка «QR» — сканируешь с телефона, открывается компактная mobile-страница этого же списка (без PIN, временный URL).
**От тебя**: ничего.
**Что нужно мне**: генератор короткоживущих токенов, mobile view.
**Сложность**: S · **Статус**: 🟢
### 32. Фото-скринсейвер из Google Photos / Nextcloud
**Что даёт**: во время screensaver плавный слайдшоу семейных фото.
**От тебя**:
- Google Photos: ограничен, API отдаёт только media items за последний год
- Nextcloud: если у тебя уже развёрнут (вижу в `/opt/digital-home/nextcloud/`) → `/remote.php/dav/` WebDAV
**Что нужно мне**: fetch случайной фотки, предзагрузка.
**Сложность**: M · **Статус**: 🟡 (твой Nextcloud уже готов)
### 33. Мини-игры для гостей
**Что даёт**: простые игры — память, 2048, сапёр. Чтобы гостям / детям занять 5 минут.
**От тебя**: ничего.
**Что нужно мне**: отдельная вкладка или секция в Home.
**Сложность**: M · **Статус**: 🟢
### 34. Гостевой режим
**Что даёт**: открыть UI без PIN, но в ограниченном виде (только время+погода, без календаря и заметок).
**От тебя**: ничего.
**Что нужно мне**: отдельный read-only pub URL `/guest` без middleware.
**Сложность**: S · **Статус**: 🟢
### 35. Голосовой ассистент на планшете
**Что даёт**: «Окей, дом — таймер на 5 минут», «Добавь в список молоко».
**От тебя**:
- Для offline распознавания — Rhasspy или Vosk
- Для Whisper API — Anthropic/OpenAI key (платно)
**Что нужно мне**: Web Speech API (браузерное, но требует onlineGoogle в Chrome) → либо кастомный микросервис STT на сервере.
**Сложность**: L · **Статус**: 🟡
### 36. Multi-user профили (Даниил + Света)
**Что даёт**: два PIN, две темы, два избранных набора (остановки / заметки / календарные фильтры).
**От тебя**: ничего.
**Что нужно мне**: переделка auth — user slot, namespaced storage.
**Сложность**: L · **Статус**: 🟢
### 37. Weekly digest / summary
**Что даёт**: воскресное напоминание «за неделю: 12 событий / 3 поездки / 5 заметок».
**От тебя**: ничего.
**Что нужно мне**: агрегатор со стораджа, показ overlay по воскресеньям.
**Сложность**: S · **Статус**: 🟢
### 38. Фаза луны / восход-закат / магнитные бури
**Что даёт**: тонкий inline-виджет («Закат 20:47 · полная луна 🌕 · магнит. спокойно»).
**От тебя**: ничего (открытые API).
**Что нужно мне**: SunCalc + API Tesis/Spaceweather.
**Сложность**: S · **Статус**: 🟢
### 39. Качество воздуха снаружи
**Что даёт**: сравнение PM2.5 внутри (из очистителя) vs на улице. Если снаружи хуже — «закрой окна».
**От тебя**: ничего.
**Что нужно мне**: OpenAQ / AirPollution API (бесплатно), виджет.
**Сложность**: S · **Статус**: 🟢
### 40. Пробки / яндекс-карта
**Что даёт**: embed карты с пробками. Или собственный виджет «трафик СПб 5/10».
**От тебя**: Yandex Maps API ключ (бесплатный при низком трафике).
**Что нужно мне**: iframe или канвас.
**Сложность**: S · **Статус**: 🟡
### 41. Интерактивный план квартиры (SVG floor plan)
**Что даёт**: схема квартиры с клик-устройствами прямо на плане комнат.
**От тебя**: план квартиры (нарисовать в Figma / SVG).
**Что нужно мне**: SVG редактор-viewer, маппинг точек на devices.
**Сложность**: L · **Статус**: 🟡
### 42. Такси / eда (deep links)
**Что даёт**: кнопка «Такси до работы» открывает Yandex.Taxi deep-link с заданным адресом.
**От тебя**: ничего (deep links не требуют API).
**Что нужно мне**: просто `<a href="yandextaxi://...">`.
**Сложность**: S · **Статус**: 🟢
### 43. Автотема по времени суток
**Что даёт**: утром — светлая тема, вечером — тёмная. С опцией «следовать за закатом» (по локации).
**От тебя**: ничего.
**Что нужно мне**: cron-подобный useEffect, чекбокс в Settings.
**Сложность**: S · **Статус**: 🟢
### 44. Backup / Export заметок
**Что даёт**: раз в день JSON-дамп всех данных в `/data/backups/`. Кнопка «Экспорт всё» в Settings.
**От тебя**: ничего.
**Что нужно мне**: cron внутри приложения (setInterval), clean-up старых бэкапов.
**Сложность**: S · **Статус**: 🟢
### 45. Error boundary + Sentry
**Что даёт**: вместо белого экрана при краше — friendly fallback + автоматический репорт.
**От тебя**: Sentry free tier (5k events/month).
**Что нужно мне**: `@sentry/nextjs`, error boundary.
**Сложность**: S · **Статус**: 🟡
### 46. Relationship / surprise layer
**Что даёт**: скрытая секция, которую видно только с PIN Даниила: годовщина («92 дня с тобой», «цветы Свете в следующую пятницу»), напоминания про подарки, history ссылок что ей понравилось в соцсетях. Маленькая, но эмоционально очень сильная фича.
**От тебя**: ничего, но сформулировать что именно хочешь напоминать.
**Что нужно мне**:
- Отдельный namespace в storage (encrypted или просто гейт по PIN)
- Countdown-миксин с существующим виджетом
- Настройки «закрытых» напоминалок
**Сложность**: M · **Статус**: 🟢 · **Зависимость**: #36 (multi-user)
### 47. NFC / QR физические триггеры
**Что даёт**: метка на прикроватной тумбочке → тапнул телефоном → планшет переключается в «ночной режим» + HA гасит свет. Метка в прихожей → «ухожу» сценарий. Физическое ощущение управления домом.
**От тебя**:
- NFC-метки (NTAG213 ~50₽/шт, 10 штук на Ozon ~500₽)
- Настройка Shortcuts на iOS / NFC Tools на Android — тап открывает URL типа `https://tablet.digital-home.site/trigger/night`
**Что нужно мне**: `/trigger/{name}` route, выполняющий preset HA-сцену.
**Сложность**: S (код) + S (настройка меток) · **Статус**: 🟡
### 48. Health endpoint и мониторинг самого дашборда
**Что даёт**: `/api/health` для Uptime Kuma (уже развёрнут у тебя), алерт если tablet.digital-home.site лежит дольше 5 минут.
**От тебя**: добавить target в свой Uptime Kuma (это меньше минуты).
**Что нужно мне**: `/api/health` endpoint отдающий `{ok: true, uptime, version}`.
**Сложность**: S · **Статус**: 🟢
### 49. Feature flags / widget enable toggles
**Что даёт**: в Settings «включить/выключить виджет X» без редеплоя. Когда виджетов 15+, одни будут нужны Свете, другие Даниилу.
**От тебя**: ничего.
**Что нужно мне**: конфиг в `/data/tablet-config.json` + conditional rendering.
**Сложность**: S · **Статус**: 🟢
### 50. Internationalization (RU / EN toggle)
**Что даёт**: для гостей (если придут иностранцы) или если Даниил хочет «поработать на английском».
**От тебя**: ничего.
**Что нужно мне**: i18n ключи, переключалка в Settings. Большое количество строк — нетривиально.
**Сложность**: L · **Статус**: 🟢
---
## Что я бы делал следующим (если бы решал сам)
1. **Своя экосистема** (AH) — хотя бы 2-3 виджета (habits streak, pulse balance, homelab health). Это то, что делает дашборд **твоим**, а не «ещё один погодный виджет».
2. **PWA + Fully Kiosk** (идея #1) — фундамент для «это выглядит как appliance»
3. **WebSockets HA** (идея #2) — больше всего wow за трудозатрат, особенно если потом добавишь реальные устройства
4. **Утренний режим** (идея #4) — сразу новая модальность дашборда
5. **Telegram shopping bot** (идея #5) — замыкает Свету в семейный сценарий
6. **Cooking mode** (7b) — специфичный ритуал, сильно меняет восприятие
7. **Выбор остановок из UI** (идея #6) — убирает хардкод, делает виджет конфигурируемым
---
## Что нужно от Даниила в порядке подготовки
| Подготовка | Зачем | Срочность |
|---|---|---|
| Установить Home Assistant Companion на телефон | геолокация, motion-wake, quick controls | высокая |
| Создать Telegram-бота (`@BotFather`) | shopping list bridge, notifications | средняя |
| Anthropic API key | рецепты, GPT-based фичи | средняя |
| План квартиры в SVG | интерактивный floor plan | низкая |
| Купить лицензию FKB €7 | снять watermark, remote admin | низкая |
| Купить IR-бластер (Broadlink RM4) | управление TV/AC с планшета | низкая |
| Добавить Я.Станцию в HA | виджет Я.Станции на home | средняя |
| Завести Sentry-проект | error monitoring | низкая |
| Завести OpenRouteService API key | walking times | средняя |
| Завести Spotify Developer App | media control | низкая |
Срочность = субъективная оценка пользы в ежедневном использовании.
---
## Что стоит обсудить прежде чем делать
- **Приватность геолокации Светы** — она согласна?
- **Анонимность vs удобство** — храним ли историю команд, логи Telegram-сообщений? Компромисс: хранить 7 дней.
- **Hard-коды vs конфиг** — каждая новая фича = либо в `/data/tablet-config.json`, либо UI в Settings. UI в Settings — дольше, но красиво.
- **Одна вкладка или много виджетов?** — текущий подход bento на Home ограничен по высоте. Когда добавим 5+ виджетов, нужна ли отдельная «widget board»?
- **Общая семейная БД или per-user?** — сейчас всё shared. Multi-user ломает storage API, но может быть нужен.
---
---
## ✅ Что уже сделано (по состоянию на 23.04.2026)
Вычёркиваем из будущего — не путаемся.
- [x] **Базовая bento-сетка Home** (редизайн 23.04)
- [x] **Семантические CSS-токены** (`--surface-1/2/3`, `--border-subtle`, etc.) — тёмная и светлая темы перестали ломаться
- [x] **TopBar с приветствием в центре** (3-col grid: часы · приветствие · сенсоры+HA)
- [x] **Виджет трамваев ОРГП СПб** — 23/27/39 × 2 направления, живые прибытия каждые 30с
- [x] **Заметки с датой** (`pinDate`) + swipe-to-delete
- [x] **Forecast swipe** между днями в модалке погоды + dot-indicator
- [x] **Night-shift tint** (22:0006:00 — тёплый оранжевый оверлей)
- [x] **Календарь** — CRUD, два владельца (Даниил + Света), фильтры, редактирование inline
- [x] **Screensaver** — 2 минуты idle → часы+погода
- [x] **PIN-авторизация** с HMAC cookie на 1 год
- [x] **Volume-mount `/data`** — заметки и PIN переживают редеплой
- [x] **Календарь — Moscow TZ fix** — сегодняшние события теперь показываются сразу в 00:00 МСК
- [x] **All-day events fix** — end.date = next day + clear opposite field
- [x] **Tab transitions** — mode=sync, без чёрного моргания
- [x] **Анимированная погода SVG** + ambient orbs меняющие цвет от погоды
- [x] **7-дневный прогноз с daily details** (feels-like, осадки, ветер, влажность на день)
- [x] **Device animations** — fan-spin, light-pulse, device-breathe
---
## 📊 Value × Effort матрица (для быстрого сканирования)
«Value» — субъективный glance-эффект в ежедневном использовании (1-5).
«Effort» — время на реализацию (1-5, где 5 = L сложность).
Правый-верхний угол = делать в первую очередь. Левый-нижний = не делать совсем.
| Идея | Value | Effort | Value/Effort |
|---|:-:|:-:|:-:|
| (A) Habits streak widget | 5 | 1 | **5.0** ⭐ |
| (D) Pulse balance | 5 | 1 | **5.0** ⭐ |
| 4. Утренний режим | 5 | 2 | **2.5** |
| 7b. Cooking mode | 4 | 2 | **2.0** |
| 17. Bill tracker | 4 | 1 | **4.0** ⭐ |
| 15. Countdown (Токио) | 4 | 1 | **4.0** ⭐ |
| 2. WebSockets HA | 4 | 3 | 1.3 |
| 5. Telegram shopping bot | 5 | 3 | 1.7 |
| 1. PWA + FKB | 5 | 2 | **2.5** |
| 8. Walking-time | 5 | 1 | **5.0** ⭐ |
| 6. Выбор остановок из UI | 3 | 3 | 1.0 |
| 3. Яндекс.Станция | 4 | 3 | 1.3 |
| 7. Контекстные подсказки | 5 | 3 | 1.7 |
| 13. Таймеры | 4 | 1 | **4.0** ⭐ |
| 19. Photo frame | 3 | 3 | 1.0 |
| 29a. Wake word | 5 | 5 | 1.0 |
| 10. Рецепты AI | 3 | 2 | 1.5 |
| 25. Робот-пылесос | 2 | 1 | 2.0 (только при наличии) |
| 35. Voice assistant | 4 | 5 | 0.8 |
| 41. Floor plan | 2 | 5 | 0.4 |
⭐ — «немедленные победы» (V/E ≥ 4). Эти делаем **первыми**, независимо от уровня.
---
## 🔗 Граф зависимостей
Что блокирует что. Узлы слева — фундамент, справа — надстройки.
```
Свой API экосистемы (habits, pulse, langlearn)
1. PWA + FKB ─────────────────┐
↓ │
4. Утренний режим ←── 8. Walking-time
2. WebSockets HA ─────────────┼──→ 3. Я.Станция виджет
↓ │
7. Контекстные подсказки ←────┤
11. Геолокация ───────────────┤
5. Telegram bot ──────────────┼──→ 18. Telegram bridge (ответы)
↓ │
Shared lists/notes ←──────────┘
36. Multi-user ───→ 46. Relationship layer (private)
29a. Wake word ───→ 13. Таймеры (voice-activated)
└──→ 35. Voice assistant (full)
17. Feature flags ───→ 21-28. Все conditional виджеты
```
**Вывод**: PWA/FKB и WebSockets — узкие места. Без них половина фич Level 2-3 бессмысленна.
---
## 🤔 Build vs Buy — что можно не писать самому
Прежде чем писать фичу, проверить: нет ли готового?
| Фича | Готовое решение | Стоит ли писать своё? |
|---|---|---|
| HA dashboard (кнопки устройств) | [HA Lovelace](https://www.home-assistant.io/dashboards/), [Bubble Card](https://github.com/Clooos/Bubble-Card), [Mushroom Cards](https://github.com/piitaya/lovelace-mushroom) | ❌ Не стоит — Bubble/Mushroom лучше нашего Devices tab, и они уже встроены в HA |
| Погода + календарь dashboard | [MagicMirror²](https://magicmirror.builders/) | ⚠️ Можно, но MM² для зеркал, не для планшетов; наш UX лучше |
| Kiosk mode | **Fully Kiosk Browser** | ✅ Покупаем, не пишем |
| Telegram bot для shopping | [Grocy](https://grocy.info/) + их Telegram интеграция | ⚠️ Grocy огромен для нашей задачи, проще свой бот |
| Recipe recognition | Существующие приложения типа Yummly | ❌ Но свой через Claude API = контролируемо |
| Voice assistant | **Home Assistant Voice Preview Edition** (железка от HA за ~$60) или [Rhasspy](https://rhasspy.readthedocs.io/) | ⚠️ HA Voice — зрелое решение, стоит попробовать вместо своего |
| Password manager на планшете | **Vaultwarden** (уже установлен в `/opt/digital-home/vault/`) | ✅ Использовать готовое, добавить autofill |
| Photo frame | Android стандартный Daydream + Google Photos / Simple Gallery | ⚠️ Стандартный Daydream не персонализирован под наш проект, но можно использовать как fallback |
| Bill tracker | [Firefly III](https://www.firefly-iii.org/) | ⚠️ Ogromen для одной фичи, проще свой |
| News reader | [Miniflux](https://miniflux.app/) + iframe | ✅ Можно положить iframe на отдельную вкладку |
**Правило**: если готовое закрывает 80% задачи — использовать его и встроить через iframe/API. Писать своё имеет смысл только если нужна тесная интеграция с другими виджетами (например, погода влияет на контекстную подсказку про зонт → это нельзя в iframe с MagicMirror).
---
## 🚫 Что отвергнуто (чтобы не возвращаться)
Идеи, которые обсудили и решили **не делать**:
- **Интерактивный план квартиры** (#41) — слишком много ручной работы по SVG, использовать будем раз в месяц. Лучше отдельная вкладка «Устройства по комнатам» с эмодзи.
- **Мини-игры для гостей** (#33) — гости предпочтут свой телефон. Не наш конкурентный домен.
- **Ежедневные ручные чек-боксы привычек** — через неделю забросишь. Habits-app делает это правильно через дофамин-цикл, дашборд просто показывает оттуда.
- **Множественные квартирные планшеты (кухня + коридор + спальня)** — не сейчас. Один планшет, если реально нужно — покупаем ещё, но дашборд один.
- **Реклама / внешние push** — never.
---
## 🗓️ Рекомендуемая последовательность на ближайший месяц
### Неделя 1 (пока планшет в пути)
- Создать Telegram-бота (@BotFather) → token в `tablet.env`
- Install HA Companion на свой телефон → настроить device_tracker + zone «Дом»
- Согласовать с Светой геолокацию (она тоже ставит Companion)
- Собрать список counting events (ДР, Токио, годовщина)
- Узнать координаты дома + walking-time до остановок через Google Maps
### Неделя 2 (планшет приехал)
- **Сессия 1**: PWA manifest + FKB развёртывание на планшете
- **Сессия 2**: Habits + Pulse виджеты (экосистема A + D) — самый быстрый wow
- **Сессия 3**: Утренний режим + Countdown виджет
### Неделя 3
- **Сессия 4**: Telegram shopping bot
- **Сессия 5**: Walking-time интеграция в утренний режим
- **Сессия 6**: WebSockets HA (инфраструктура для сезона 3)
### Неделя 4
- **Сессия 7**: Cooking mode с Wake Lock API
- **Сессия 8**: Bill tracker + Countdown для счетов
- **Сессия 9**: Контекстные подсказки (базовые без геолокации Светы)
- **Неделя живём** — собираем обратную связь, что мозолит глаз
После — оцениваем, хочется ли Сезон 3 (Яндекс.Станция, rules-engine, notification overlays) или переключиться на релакс-фичи (photo frame, moon phase, countdown polish).
---
*Создано Cosmo, 2026-04-23. Обновлено 2026-04-23 (+ своя экосистема, +5 пропущенных идей, +value/effort матрица, +граф зависимостей, +build-vs-buy, +отвергнутые идеи, +список уже сделанного). См. `smart-home-tablet.md` (reference), `smart-home-tablet-fkb-setup.md` (kiosk), `smart-home-tablet-vision.md` (стратегия).*