.github/workflows | ||
cypress | ||
docs | ||
examples | ||
generator | ||
plugins | ||
review | ||
src | ||
tests | ||
.all-contributorsrc | ||
.gitignore | ||
.nvmrc | ||
.prettierrc | ||
CHANGELOG-ELM.md | ||
CHANGELOG-NPM.md | ||
CONTRIBUTING.md | ||
cypress.config.ts | ||
docs.json | ||
elm-tooling.json | ||
elm.json | ||
jsconfig.json | ||
LICENSE | ||
netlify.toml | ||
package-lock.json | ||
package.json | ||
README.md |
elm-pages
A statically typed site generator, written with pure Elm.
Getting Started Resources
- elm-pages Docs Site
- elm-pages Elm API Docs
- Quick start repo (live site hosted here)
- Introducing
elm-pages
blog post examples
folder (includes https://elm-pages.com site source)
Key features
SEO made easy
With elm-pages
, SEO is as easy
as calling a type-safe, high-level Elm API
and passing in data from your content's metadata.
The metadata is just Elm data that you define however you want, using a Json Decoder to grab data out of your markdown frontmatter.
import MyMetadata exposing (MyMetadata)
head : BlogMetadata -> List (Head.Tag Pages.PathKey)
head meta =
Seo.summaryLarge
{ canonicalUrlOverride = Nothing
, siteName = "elm-pages"
, image =
{ url = PagesNew.images.icon
, alt = meta.description
, dimensions = Nothing
, mimeType = Nothing
}
, description = meta.description
, locale = Nothing
, title = meta.title
}
|> Seo.article
{ tags = []
, section = Nothing
, publishedTime = Just (Date.toIsoString meta.published)
, modifiedTime = Nothing
, expirationTime = Nothing
}
Optimized for performance
elm-pages
has a set of features built-in to make
sure your page is blazing fast on any device.
- Automatic page pre-rendering
- Page content is split up per-page so page content downloads and parses just-in-time
- Page pre-fetching on link hover
Try out elm-pages
, open up Lighthouse, and
see for yourself! Or check out https://elm-pages.com
(find the source code in the examples/docs/
folder).
What's next?
Take a look at the current projects to see the current priorities!
https://github.com/dillonkearns/elm-pages/projects
Contributors ✨
Thanks goes to these wonderful people (emoji key):
Daniel Marín 💻 |
Steven Vandevelde 💻 |
Johannes Maas 📓 💻 |
Wiktor Toporek 💻 |
Luke Westby 💻 |
This project follows the all-contributors specification. Contributions of any kind welcome!