Files
obsidian/smart-home-tablet-roadmap.md

686 lines
53 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.
# 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` (стратегия).*