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
/debugand/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.