Skip to content

hakula139/kiln

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

kiln

CI License: MIT Ask DeepWiki

A custom static site generator (SSG) written in Rust, replacing a Hugo + LoveIt stack for hakula.xyz.

Overview

kiln is purpose-built to support the specific needs of hakula.xyz — CJK content, KaTeX math, custom directive-based shortcodes, and full control over the rendering pipeline. Rather than fighting a general-purpose SSG's assumptions, kiln implements exactly what's needed with no more complexity than necessary.

Roadmap

  • TOML configuration and frontmatter (+++ delimited)
  • Markdown with GFM extensions (tables, strikethrough, autolinks, footnotes)
  • KaTeX math support ($...$ / $$...$$)
  • Syntax highlighting via syntect (CSS classes, no JS runtime)
  • ::: fenced directive system with callouts and Pandoc fenced divs
  • CJK-aware heading ID generation
  • Table of contents generation
  • Open Graph / Twitter Card / SEO meta tags
  • Template engine with block inheritance (MiniJinja)
  • Theme system with site-level overrides
  • Emoji shortcodes and Font Awesome icons
  • Pandoc-style image attributes ({#id .class width=N})
  • Code blocks with language headers and collapsible max-lines
  • Static file handling and co-located content assets
  • Pretty URLs (/post/ instead of /post.html)
  • Additional directives (styled blocks, embeds, link cards)
  • Hugo content migration tool (kiln convert)
  • Taxonomy support (tags, categories) with pagination
  • Home page, section pages, and special pages
  • Dark theme with Tailwind CSS
  • RSS feed + sitemap
  • Full-text search via Pagefind

Usage

# Build the site (default root: current directory)
kiln build

# Build from a specific project root
kiln build --root /path/to/site

# Scaffold a new theme
kiln init-theme my-theme

Site Structure

A kiln site is organized as follows:

.
├── config.toml      # Site configuration (TOML)
├── content/         # Markdown content
│   ├── posts/       # Blog posts organized by category
│   └── about-me/    # Standalone pages
├── templates/       # MiniJinja templates (site overrides theme)
├── themes/          # Themes (git submodules)
├── static/          # Static assets (copied to output as-is)
└── public/          # Build output (configurable via output_dir)

Documentation

  • docs/syntax.md — Markdown extensions, frontmatter fields, and directive syntax
  • docs/themes.md — Theme installation, configuration, and creation

Building from Source

Requires Rust 1.85+ (edition 2024).

cargo build --release

The binary will be at target/release/kiln.

Development

cargo build                    # Build
cargo fmt --all --check        # Check formatting
cargo clippy --all-targets     # Lint (pedantic)
cargo test                     # Run tests

CI runs these same checks on every push and pull request via GitHub Actions.

License

Copyright (c) 2026 Hakula. Licensed under the MIT License.

About

[WIP] A custom static site generator (SSG) written in Rust

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages