blogatto

Blogatto is a Gleam framework for building static blogs.

Given a Config, a single call to build() generates your entire site: blog posts from markdown with frontmatter, static pages from Lustre views, RSS feeds, sitemaps, and robots.txt — all rendered via Maud components and written to the configured output directory.

Quick start

import blogatto
import blogatto/config
import blogatto/config/markdown

pub fn main() {
  let md =
    markdown.default()
    |> markdown.markdown_path("./blog")

  let cfg =
    config.new("https://example.com")
    |> config.output_dir("./dist")
    |> config.static_dir("./static")
    |> config.markdown(md)

  let assert Ok(Nil) = blogatto.build(cfg)
}

Values

pub fn build(
  config: config.Config(msg),
) -> Result(Nil, error.BlogattoError)

Build the static site based on the provided configuration.

Build steps

  1. Clean output directory and recreate it.
  2. Copy static assets from static_dir to output_dir.
  3. Generate robots.txt via webls.
  4. Build blog pages — walk markdown paths, parse frontmatter, render via Maud components, write HTML, copy assets. Produces List(Post(msg)).
  5. Render static pages from configured routes.
  6. Generate RSS feeds via webls.
  7. Generate sitemap XML via webls.
Search Document