Blog server

Динамический веб-сервер для персонального блога, заменивший связку Hugo + PHP. Сервер читает Markdown при старте и отдаёт HTML на лету — никакой статической генерации и пересборки. Изменил `.md` файл — сайт мгновенно обновился через hot reload.

Один бинарник содержит всё: блог, авторизацию через OAuth, поиск, RSS/sitemap, отдачу статики. Единственная локальная БД (SQLite) — для счётчика просмотров, сессий и аудита входа.

Содержание

Кратко

  • Динамический рендеринг. Markdown читается при старте, страницы формируются в момент запроса.
  • Два языка из коробки. Русский и английский: / для основного языка, /{lang}/ для остальных.
  • Система плагинов и шорткоды. Плагины на нескольких категориях хуков (markdown, render, tera, middleware, shortcode); шорткоды — {load:name;params}.
  • OAuth без PHP. Google и Yandex, CSRF через constant-time сравнение, JWT-сессии.
  • Встроенный поиск. Серверный scoring с <mark>-сниппетами и подсветкой в тексте.
  • Безопасность и эксплуатация. Rate limiting, CSP + security headers, gzip/brotli, IP-restricted /debug и /metrics, TLS (file/self-signed/Let's Encrypt), graceful degradation.
  • Тесты и качество. Unit + integration, покрытие строк ≥75%, cargo clippy -D warnings — 0 предупреждений.

Подробности — на странице Возможности.