Skip to main content

Slick

Slick provides a small set of tools and combinators for building static websites on top of the Shake build system. Shake is adaptable, fast, reliable, and caches aggressively so it's a sensible tool for static-site builds, but figuring out how to get started can be a bit abstract. Slick aims to answer the question of 'how do I get a site building?' while giving you the necessary tools and examples to figure out how to accomplish your goals.

Here's a quick overview of what Slick can do:

  • Slick uses the Shake build tool; the same used by ghcide! We recommend using Development.Shake.Forward; it auto-discovers which resources it should cache as you go! This means a blazing fast static site builder without all the annoying dependency tracking.
  • Slick provides helpers for loading in blog-post-like things using Pandoc under the hood;
    • This means that if Pandoc can read it, you can use it with Slick!
    • Write your blog posts in Markdown or LaTeX and render it to syntax-highlighted HTML!
    • Slick processes Pandoc (and LaTeX) metadata into a usable form (as an Aeson Value object) which you can manipulate as you please.
  • Slick provides combinators for rendering Mustache templates
    • Slick wraps Justus Adam's Mustache library and provides cached template rendering with awareness of changes to templates, partials, and Mustache objects.
    • It's a thin wrapper so you can still use things like Mustache functions, etc. if you like!
  • Provides only the individual tools without opinions about how to wire them up; if you want to load blog posts from a database and render them out using Blaze html; well go ahead, we can help with that!
  • Provides caching of arbitrary (JSON serializable) objects using Shake resulting in super-fast rebuild times!