Files
bare/docs/decisions/002-go-server.md
T
mayatnikovandClaude Fable 5 ae55c846aa ADR-015…024 и спецификации v1: криптография, протокол, хранение, UI, деплой, план
Закрыты все открытые вопросы проектирования. Пароль не покидает клиент
(два ключа из мастера), 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
2026-08-22 10:53:24 +03:00

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.