# Configuration Cheatsheet
## Minimal site
```elixir
import Astral.Config
site do
pages "pages"
layouts "layouts" do
default "default.html"
end
end
```
## Common paths
```elixir
site do
root "."
outdir "dist"
pages "pages"
public "public"
components "components"
end
```
## Layouts
```elixir
layouts "layouts" do
default "default.html"
end
```
Use a `.astral` layout:
```elixir
layouts "layouts" do
default "site.astral"
end
```
## Assets
```elixir
assets "assets" do
entry "app.ts"
url_prefix "/assets"
hash true
end
```
## Dynamic file routes
```text
pages/blog/[slug].astral -> /blog/:slug
pages/docs/[...path].md -> /docs/*path
```
Read route params from templates and layouts with string keys:
```eex
<%= @params["slug"] %>
```
## Content collections
```elixir
collections do
collection :posts, "content/posts" do
permalink "/blog/:slug/"
layout "post.html"
schema do
field :title, :string, required: true
field :date, :date, required: true
field :draft, :boolean, default: false
field :tags, {:array, :string}, default: []
end
end
end
```
## Plugins
```elixir
plugins [
{Astral.Plugin.Feed,
site_url: "https://example.com",
title: "My Blog",
author: "Me",
collection: :posts},
{Astral.Plugin.Sitemap,
site_url: "https://example.com"}
]
```