snor
Snor (Dutch for moustache 🥸) is a semi-static site generator. Markdown files are rendered to HTML at startup and kept in memory. Superfast.
This website runs on it.
Written in Go. Shows the usage of the standard library like wrapping and intercepting HTTP handlers, parsing Markdown, I/O, testing/mocking, logging, templating and more.
HTTP Handlers
- Content handler (renders HTML from Markdown)
- Directory listing handler
- Media decorator (renders HTML pages for media like images, video, audio and documents)
- Ontology handlers
- File server
Features
Content
- Metadata extraction from Markdown files
Feeds
- RSS (RSS 2.0, Atom)
- JSON feed
File content
- Markdown rendering
- Pretty media viewer (images, audio, video, csv, documents, markup)
- Directory listings
- Git repositories
Ontology
- Categories
- Tags
- Sitemap
- Search
Misc
- Content negotation for images, audio and video
- Related content based on shared tags (‘recommendation engine’)
- Sitemap.xml
- Pages render in < 1 ms
Authoring content
Content is written in Markdown. Metadata (tags, categories, publication) is also retrieved from Markdown.
A simple article Markdown:
snor====Published: 2026-01-23 06:16:57 +0000Category: RamblingsTags: CMS, Website, Golang, MarkdownSi sagittis-----------Lorem markdownum hausi externis praeterque, enim nostri, capillis quoquelacrimis fumantis humano tabellae. Tua circum: est bos sic, priori et laboratumrelicta sanguine ipse obstitit `drive_graphics` vulnere Oeten; est. Venus meincesto pudorem tremens veniebat invitum flexuque in parte timor Baucis pastorvedonec visa naribus quod, parte.
Metadata
As mentioned, metadata is extract from the document. The example will be filed under the category ‘Ramblings’ and published at the specified date. Title and images are also extracted to be used in overview and other pages.