Роадмап: 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 снята целиком и оставлена честной строкой до итога разведки. Открытые вопросы архитектуры, границы паспорта и триггеры метки ревью приведены в соответствие.
3.4 KiB
3.4 KiB
✨ Собрать каркас приложения и раздать его из бинарника
- Тип: feature
- Категория: Инфра
- Зачем: Экранов нет и собирать их нечем: ни сборки фронтенда, ни раздачи статики в проекте не существует.
- Теги: goal:web-access
Двигает «Завершение» цели опосредованно: сам по себе каркас пользователю ничего не даёт, но без него ни один экран не соберётся. Видимая польза — приложение открывается и показывает, что оно живо и кто вошёл.
Берётся после spa-framework-choice: собирать не на чем, пока фреймворк не
выбран.
Затрагивает
- новый каталог фронтенда: исходники, зависимости, конфигурация сборки;
Taskfile.yml— шаг сборки статики и его место вtask gateиtask image;Dockerfile— сборка статики внутри образа, чтобы выкладка не зависела от машины разработчика;- раздача статики из бинарника через
go:embedи роут под неё; .gitignore— каталог зависимостей и собранная статика;docs/conventions/web-ui.md— переписывается под выбранный фреймворк;docs/architecture.md— новый компонент и новая внешняя зависимость сборки.
Критерии приёмки
- Статика собирается одной командой и вшивается в бинарник: запущенный бинарник отдаёт приложение без каталога рядом. Оракул — сборка, запуск бинарника из пустого каталога, запрос корня возвращает разметку приложения.
- Образ собирается на чистой машине без предустановленного окружения фронтенда.
Оракул —
task imageбез локально установленных зависимостей фронтенда. - Приложение показывает, кто вошёл, и обращается к API живого сервера. Оракул — тест либо ручная проверка на запущенном сервере с сессией.
- Шаг сборки статики входит в
task gateи краснеет при ошибке сборки. Оракул — намеренно сломанный исходник роняетtask gate.
Рамки
Экранов, кроме заглушки с именем вошедшего, не делаем — это upload-and-status-screen
и records-list-screen. Установку на телефон не делаем — это installable-pwa.
Появление шага сборки в гейте меняет требования к машине разработчика: это
решение уровня ADR, и оно записывается.