Нарезка задач под целевое состояние: PWA, вход, хранилище
Роадмап: web-access переименована под приложение, которое ставится на телефон; заведена цель ready-notification — уведомление о готовности без открытого приложения. Беклог: десять задач. Многопользовательская цепочка (oidc-login, record-ownership, telegram-account-link), веб (json-api-for-spa, spa-skeleton, upload-and-status-screen, records-list-screen, installable-pwa), уведомления через apprise и ntfy, разведка выбора фреймворка. Очередь: долги, хранилище, вход, приложение. Решение сменилось с htmx на SPA, поэтому conventions/web-ui.md снята целиком и оставлена честной строкой до итога разведки. Открытые вопросы архитектуры, границы паспорта и триггеры метки ревью приведены в соответствие.
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
# ✨ Сделать приложение устанавливаемым на телефон
|
||||
|
||||
- **Тип:** feature
|
||||
- **Категория:** Инфра
|
||||
- **Зачем:** Приложение, живущее вкладкой браузера, теряется среди прочих: ярлыка на экране у него нет.
|
||||
- **Теги:** goal:web-access
|
||||
|
||||
Двигает пункты 5 и 6 «Завершения» цели: приложение ставится с телефона и
|
||||
запускается с ярлыка без адресной строки, а открытое без сети показывает это
|
||||
состоянием.
|
||||
|
||||
Берётся после того, как есть что ставить, — то есть после
|
||||
`records-list-screen`.
|
||||
|
||||
## Затрагивает
|
||||
|
||||
- манифест приложения: имя, иконки под размеры экранов, цвета, режим показа;
|
||||
- service worker: регистрация, обновление версии, поведение без сети;
|
||||
- раздача манифеста и service worker с правильными заголовками и без длинного
|
||||
кэша;
|
||||
- версионирование собранной статики, чтобы установленное приложение обновлялось;
|
||||
- `docs/conventions/web-ui.md` — раздел про статику и кэш;
|
||||
- `docs/security.md` — service worker перехватывает запросы, и это новая
|
||||
поверхность.
|
||||
|
||||
## Критерии приёмки
|
||||
|
||||
- Приложение предлагается к установке и после установки запускается с ярлыка на
|
||||
отдельном экране, без адресной строки. Оракул — проверка на телефоне и
|
||||
сверка манифеста инструментом браузера.
|
||||
- Открытое без сети приложение показывает состояние «связи нет», а не пустую
|
||||
страницу и не ошибку браузера. Оракул — тест либо ручная проверка с
|
||||
выключенной сетью.
|
||||
- Новая выкладка доходит до установленного приложения: старая статика из кэша не
|
||||
переживает обновление. Оракул — установка, выкладка изменённой версии,
|
||||
перезапуск приложения показывает новую.
|
||||
- Service worker не кэширует ответы API и не отдаёт чужие данные после смены
|
||||
сессии. Оракул — тест: после выхода и входа другой учётной записью список
|
||||
записей чужих не содержит.
|
||||
|
||||
## Рамки
|
||||
|
||||
Офлайн-чтения готовых расшифровок и очереди отправки без сети **не делаем** —
|
||||
это за границей цели. Web Push не делаем: уведомления идут через apprise и ntfy,
|
||||
цель `ready-notification`.
|
||||
Reference in New Issue
Block a user