Newsletter
Join the Community
Subscribe to our newsletter for the latest news and updates
Clojure library for building static websites by evaluating Clojure code to generate page content.
Fabricate is a Clojure library, categorized as a developer tool, that generates static websites by evaluating Clojure code to produce page content.
Fabricate is a Clojure library for making static websites, using Clojure as the page-generation language. It takes templates containing Clojure expressions and raw Clojure files as sources, and produces static HTML pages via a three-function API: plan!, assemble, and construct!. The library is built around the idea that you should be able to use Clojure to generate as much or as little of your website as necessary, and it runs on any JVM environment that supports Clojure.
plan! collects sources, assemble builds documents from sources, and construct! generates pages, all with a simple threading API.collect, build, and produce! — correspond to the three API functions, allowing extension to new markup formats.site.fabricate.api namespace is stable, with prototype-prefixed namespaces still subject to change.plan! / assemble / construct! pipeline.build methods to convert your own markup formats into pages, or integrate with tools like Clerk.Fabricate works through three core functions: plan! collects sources, assemble builds documents from those sources, and construct! generates pages. Each function maps to a multimethod — collect, build, and produce! — which you can extend to handle new input formats. The API example threads an empty map through all three functions to produce a site, and the API documentation describes the details.
Fabricate belongs to the static site generator family, alongside tools like Hugo, Jekyll, and Next.js with static export. What distinguishes Fabricate is its use of Clojure as the generation language, which none of those alternatives offer.
Not yet. Markdown support is planned, as is compatibility with the kindly protocol. Currently, sources are limited to templates containing Clojure expressions and Clojure files.
The core API namespace site.fabricate.api is now stable. Any namespace containing the prototype prefix should be considered subject to change until it is promoted.
Yes. Fabricate defines three multimethods — collect, build, and produce! — which correspond to the three API functions. You can extend these multimethods to support new markup formats or alternate methods of generating pages.
