A statically typed site generator for Elm.
Go to file
2022-04-10 16:37:00 -07:00
.github/workflows Run elm-pages codegen to make sure setup is valid before compiling for Cypress. 2022-03-25 10:57:36 -07:00
cypress Update test assertion. 2022-03-09 13:51:35 -08:00
docs Start upgrade notes document. 2022-03-25 09:03:30 -07:00
examples Add hacker news example. 2022-04-10 16:37:00 -07:00
generator Fix route matcher for optional route segments so it supports routing to index route. 2022-04-10 16:31:20 -07:00
plugins Expose additional type from Shiki plugin. 2022-02-06 16:24:40 -08:00
review Ignore generated .elm-pages directory in elm-review config. 2022-03-11 11:58:05 -08:00
src Add expectQueryParam helper. 2022-04-10 16:32:26 -07:00
tests Fix hardcoded value in non-matching expectFormPost message. 2022-04-07 09:24:32 -07:00
.all-contributorsrc docs: update .all-contributorsrc [skip ci] 2020-07-19 18:23:51 +00:00
.gitignore Gitignore .idea folder. 2021-12-21 07:32:24 -08:00
.nvmrc Use newer node version. 2022-01-20 19:20:15 -08:00
.prettierrc Add prettier config. 2021-07-10 07:53:14 -07:00
CHANGELOG-ELM.md Update changelog. 2021-08-03 13:39:00 -07:00
CHANGELOG-NPM.md Update changelog. 2021-08-27 11:52:11 -07:00
CONTRIBUTING.md Add webpack performance profiling instructions 2020-08-18 14:41:26 -07:00
cypress.json Add cypress config base url. 2021-07-21 13:29:54 -07:00
docs.json Add expectQueryParam helper. 2022-04-10 16:32:26 -07:00
elm-tooling.json Install elm-test-rs. 2021-12-20 11:03:42 -08:00
elm.json Remove DataSource code from bundle. 2022-02-13 12:42:31 -08:00
jsconfig.json Set up proof of concept for webpack-free build. 2020-10-10 18:07:36 -07:00
LICENSE Add LICENSE file. 2019-09-20 13:58:20 -07:00
netlify.toml Install elm-format before running build. 2022-02-13 14:56:41 -08:00
package-lock.json Use latest vite. 2022-03-31 09:51:47 -07:00
package.json Use latest vite. 2022-03-31 09:51:47 -07:00
README.md Update readme. 2021-07-30 14:47:24 -07:00

elm-pages Netlify Status Build Status npm Elm package

All Contributors

Deploy to Netlify

A statically typed site generator, written with pure Elm.

Getting Started Resources

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!