Astral is a static site generator for Elixir projects. It keeps the site layer in Elixir while using Volt for frontend assets.

Elixir site configuration

Astral project configuration lives in astral.config.exs:

import Astral.Config

layouts do
  default "default.html"
end

assets do
  entry "app.ts"
end

Because the config is Elixir, you can share ordinary functions, modules, and data structures with the rest of your project.

Static output

Astral builds plain files:

dist/index.html
dist/about/index.html
dist/assets/manifest.json

There is no server runtime requirement after mix astral.build.

Volt-powered assets

Astral delegates TypeScript, CSS, imported assets, dev serving, and HMR to Volt. That means the site layer does not need to become a frontend build tool.

HEEx-first templates

.astral templates use Phoenix HEEx syntax for interpolation, attributes, :if/:for, components, and slots while rendering static HTML.

Content features

Astral includes Markdown pages, schema-backed collections, static pagination, feed and sitemap plugins, generated routes, and plugin hooks for site-specific behavior.