Skip to main content

guides/introduction/why-astral.md

# Why Astral

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`:

```elixir
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:

```text
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.