Закрыты все открытые вопросы проектирования. Пароль не покидает клиент (два ключа из мастера), TOFU для публичных ключей, устройства и конверт, атомарный rekey комнат, регистрация и контакты, схема SQLite и драйвер без cgo, сессии и CSRF, деплой через nginx+systemd, правила пушей, айдентика «Скобы» на системном mono. Иконки PWA в web/icons. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DbCjVfTFq4ZFG8juD45YJ
1.2 KiB
1.2 KiB
ADR-002: Сервер на Go, один бинарь
Уточнён ADR-020: три прямые зависимости, транзитивные допускаются; драйвер — modernc.org/sqlite. Развёртывание — ADR-022.
Контекст
Серверу Bare нужно немного: HTTP, SSE, SQLite, хеширование паролей, Web Push. Простота развёртывания и аудита важнее богатства экосистемы.
Решение
Сервер пишется на Go со стандартной библиотекой. Допущены ровно три внешних пакета: webpush-go, драйвер SQLite, argon2. Результат сборки — один бинарь.
Следствия
- Развёртывание: скопировать бинарь, запустить. Без рантаймов и обязательных контейнеров.
- Любая новая зависимость требует обсуждения и нового ADR.
- Часть вещей (роутинг, миграции) пишем руками поверх stdlib.