A site engine for Go

A folder of markdown in. A finished website out.

Quire bakes your words, pictures and diagrams into one binary and serves them. It looks good by default, and every layer of it can be replaced.

go get github.com/lahickey/quire
Shipping

One binary

Words, pictures and diagrams are baked into the site's own binary. It serves from any directory and carries none of the tooling that made it.

Pictures

Images, end to end

Refer to a picture beside a document and get a responsive ladder in WebP, sized for where it is placed.

Diagrams

Mermaid, drawn once

A mermaid fence is drawn by the bake and inlined as SVG, so it takes the site's palette and fonts.

The look

Good by default

Palette, fonts, a light and dark toggle, navigation and a sitemap, with no templates or CSS of your own.

Wiring

Every layer replaceable

Swap the palette, a stylesheet, a component, a page or the whole header. Dropping one layer is not a rewrite.

Plugins

Live when it needs to be

Pages are server-rendered HTML from templ. Live features are plugins that stream through Datastar.

This is a whole site

Home page, post index, post pages, navigation, a colour-scheme toggle, sitemap and robots.txt. Add markdown to content/posts and run it.

The smallest site →
package main

import (
	"github.com/lahickey/quire"
	"github.com/lahickey/quire/model"
)

func main() {
	quire.Run(
		model.Site{Name: "Example", BaseURL: "https://example.com"},
		func(e *quire.Engine) error {
			_, err := e.AddCollection(model.Basic{ID: "posts"})
			return err
		})
}