Files
transcriber/tasks/items/spa-framework-choice.md
T
av 115b3796e8 Нарезка задач под целевое состояние: 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 снята
целиком и оставлена честной строкой до итога разведки. Открытые вопросы
архитектуры, границы паспорта и триггеры метки ревью приведены в
соответствие.
2026-08-10 21:36:54 +03:00

2.3 KiB
Raw Blame History

🔬 Выбор фреймворка для приложения

  • Тип: research
  • Категория: Инфра
  • Зачем: Конвенция веб-UI написана под htmx, а решено делать SPA: до выбора фреймворка не заводится ни сборка, ни первый экран.
  • Теги: goal:web-access

Конвенция web-ui.md описывала htmx с прямым запретом на шаг сборки и реактивные фреймворки. Решение сменилось на SPA, и теперь эта конвенция ждёт переписывания — но написать её не под что, пока фреймворк не назван.

Разведка, а не задача: исход — знание и переписанная конвенция, а не работающий экран.

Вопрос

Какой фреймворк берём под приложение на четыре экрана, которое собирается в статику, вшивается в бинарник Go и ставится на телефон как PWA.

Куда ляжет ответ

docs/research/spa-framework.md — сравнение с числами: размер собранной статики, время холодной сборки, число зависимостей. Выбор и причина отказа от остальных — в docs/adr/, потому что переделка на другой фреймворк стоит дороже переписывания одного файла. Следом переписывается docs/conventions/web-ui.md, и до тех пор она стоит честной строкой «фреймворк не выбран».

Рамки

Сравнение идёт на одном и том же пробном экране: список записей с опросом состояния. Кандидаты названы человеком; сегодня в разговоре звучали Svelte, Vue и React, все с Vite. Мера — размер статики, простота вшивания в go:embed и цена шага сборки в гейте, а не популярность.