.github/workflows | ||
codegen | ||
cypress | ||
docs | ||
examples | ||
generator | ||
plugins | ||
review | ||
src | ||
tests | ||
.all-contributorsrc | ||
.gitignore | ||
.gitmodules | ||
.nvmrc | ||
.prettierrc | ||
CHANGELOG-ELM.md | ||
CHANGELOG-NPM.md | ||
CONTRIBUTING.md | ||
current-compatibility-key.json | ||
cypress.config.ts | ||
docs.json | ||
elm-tooling.json | ||
elm.json | ||
jsconfig.json | ||
LICENSE | ||
netlify.toml | ||
package-lock.json | ||
package.json | ||
README.md | ||
test.sh |
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
Compatibility Key
You will see an error if the NPM and Elm package do not have a matching Compatibility Key. Usually it's best to upgrade to the latest version of both the Elm and NPM packages when you upgrade. However, in case you want to install versions that are behind the latest, the Compatibility Key is included here for reference.
Current Compatibility Key: 1.
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!