Blog server

A dynamic blog web server that replaced a Hugo + PHP setup. The server reads Markdown at startup and serves HTML on the fly — no static generation, no rebuilds. Edit a `.md` file and the site updates instantly via hot reload.

One binary contains everything: the blog, OAuth login, search, RSS/sitemap, and static file serving. The only local database (SQLite) is used for the page view counter, sessions, and login audit.

Contents

In short

  • Dynamic rendering. Markdown is read at startup; pages are built at request time.
  • Two languages out of the box. Russian and English: / for the primary language, /{lang}/ for the rest.
  • Plugin system and shortcodes. Plugins across several hook categories (markdown, render, tera, middleware, shortcode); shortcodes use {load:name;params}.
  • OAuth without PHP. Google and Yandex, CSRF via constant-time comparison, JWT sessions.
  • Built-in search. Server-side scoring with <mark> snippets and in-text highlighting.
  • Security and operations. Rate limiting, CSP + security headers, gzip/brotli, IP-restricted /debug and /metrics, TLS (file/self-signed/Let's Encrypt), graceful degradation.
  • Tests and quality. Unit + integration tests, ≥75% line coverage, cargo clippy -D warnings — zero warnings.

See the Features page for details.