Hosted-UI — небольшой Go-модуль, но его структура несёт всю историю продукта: провайдеры приходят и уходят, UI остаётся прежним.
Поверхность Renderer
RenderLogin(w, r, ViewConfig)RenderLogout(w, r, ViewConfig)RenderError(w, r, ViewConfig, err)StaticFS()для/static/...
Контракт — это ViewConfig
Host-приложение передаёт брендинг, FlowConfig и FeatureFlags. FlowConfig несёт API URL, имя сессионной cookie, путь логаута и — критично — SDKScript: URL бандла браузерного SDK для активного провайдера. AuthKit не знает, говорит ли этот бандл с Hanko, Supabase или собственным Postgres-бэкендом.
Почему это важно
- Один и тот же UI-модуль рисует страницу входа для каждого провайдера, который мы поддерживаем сегодня и завтра.
- Провайдер-специфичные ассеты живут в собственной static FS (например,
authkit-hanko) и мерджатся под тем же префиксом/static/. - i18n встроена в бинарь; никаких рантайм-загрузок языковых файлов нет.
Операционные свойства
- Шаблоны компилируются в Go через templ; XSS-экранирование автоматическое.
- Тёмная тема — CSS-переключатель в
localStorage, с no-flash inline boot script. - Бандл статики content-hashed и агрессивно кешируется на edge.