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

53 KiB
Raw Blame History

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 интеграцию в 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 (бесплатно, в браузере) или 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 (€, но универсальный трекинг)
  • Либо самопис скраперов (хрупко) Сложность: 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 — локальное 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 на Android-хабе
  • или Fitbit через HA Fitbit integration (OAuth)
  • или Apple Health → через Homebridge сложно, только через 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 · Статус: 🟡

Что даёт: кнопка «Такси до работы» открывает 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)

Вычёркиваем из будущего — не путаемся.

  • Базовая bento-сетка Home (редизайн 23.04)
  • Семантические CSS-токены (--surface-1/2/3, --border-subtle, etc.) — тёмная и светлая темы перестали ломаться
  • TopBar с приветствием в центре (3-col grid: часы · приветствие · сенсоры+HA)
  • Виджет трамваев ОРГП СПб — 23/27/39 × 2 направления, живые прибытия каждые 30с
  • Заметки с датой (pinDate) + swipe-to-delete
  • Forecast swipe между днями в модалке погоды + dot-indicator
  • Night-shift tint (22:0006:00 — тёплый оранжевый оверлей)
  • Календарь — CRUD, два владельца (Даниил + Света), фильтры, редактирование inline
  • Screensaver — 2 минуты idle → часы+погода
  • PIN-авторизация с HMAC cookie на 1 год
  • Volume-mount /data — заметки и PIN переживают редеплой
  • Календарь — Moscow TZ fix — сегодняшние события теперь показываются сразу в 00:00 МСК
  • All-day events fix — end.date = next day + clear opposite field
  • Tab transitions — mode=sync, без чёрного моргания
  • Анимированная погода SVG + ambient orbs меняющие цвет от погоды
  • 7-дневный прогноз с daily details (feels-like, осадки, ветер, влажность на день)
  • 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, Bubble Card, Mushroom Cards Не стоит — Bubble/Mushroom лучше нашего Devices tab, и они уже встроены в HA
Погода + календарь dashboard MagicMirror² ⚠️ Можно, но MM² для зеркал, не для планшетов; наш UX лучше
Kiosk mode Fully Kiosk Browser Покупаем, не пишем
Telegram bot для shopping Grocy + их Telegram интеграция ⚠️ Grocy огромен для нашей задачи, проще свой бот
Recipe recognition Существующие приложения типа Yummly Но свой через Claude API = контролируемо
Voice assistant Home Assistant Voice Preview Edition (железка от HA за ~$60) или Rhasspy ⚠️ HA Voice — зрелое решение, стоит попробовать вместо своего
Password manager на планшете Vaultwarden (уже установлен в /opt/digital-home/vault/) Использовать готовое, добавить autofill
Photo frame Android стандартный Daydream + Google Photos / Simple Gallery ⚠️ Стандартный Daydream не персонализирован под наш проект, но можно использовать как fallback
Bill tracker Firefly III ⚠️ Ogromen для одной фичи, проще свой
News reader Miniflux + 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 (стратегия).