Built a lightweight blog server in Rust over the past few weekends. The page templates are specified in a custom DSL inspired by styled-components which is parsed with nom:
component Favicon { style { all: unset; } {if page == "main"} <FaviconImage /> {else} <a style="cursor: pointer" href="/"> <FaviconImage /> </a> {end} }
All code changes are published with Woodpecker CI to a local Docker Registry instance. The templates, articles and posts are stored on Hetzner S3 as a tar.gz
archive, and loaded into memory on startup. Internal endpoints reload the archives and make new content or style changes available without downtime.