Modules
A reusable static blog engine for Elixir.
Static site generator. Walks the compiled list of posts and writes a
self-contained website into the output directory (defaults to _site/).
Converts post markdown to HTML.
Business logic for the Micropub endpoint.
A blog post parsed by NimblePublisher from a markdown file in priv/posts/.
Publishes the built static site to a Cloudflare R2 bucket.
Builds an RSS 2.0 feed document from the blog's posts.
Reads blog posts from disk at runtime.
Builds JSON-LD structured-data payloads for each page type.
Generates a sitemap.xml document listing every public URL on the blog.
Behaviour that defines the five rendering callbacks a blog template must implement: index, post, category, colophon, and not_found.
Shared Phoenix.Component templates: the site layout, masthead, footer, and
theme toggle used by the default template implementation.
Default template implementation inspired by Daring Fireball.
Plug that enforces bearer-token authentication on Micropub requests.
A minimal Plug router that serves the built _site/ directory as a
static-file preview. Handles trailing-slash to index.html rewriting
so clean URLs work the same as they will on Cloudflare R2.
HTTP router for the Micropub editing server.
Builds supervisor child specs for the two Bandit servers that
mix blog.server starts
XML-RPC shim that lets MarsEdit list and fetch posts from this blog.
Mix Tasks
Builds the blog's static HTML files into the output directory.
Builds the blog and syncs the output directory to the configured R2 bucket.
Starts a tiny local HTTP server on the built blog directory for previewing
before publishing. Uses Erlang's built-in :inets httpd.
Starts two Bandit servers from a single supervisor