🚀 Krik

A fast static site generator written in Rust 🦀 that transforms Markdown files into beautiful, responsive websites with internationalization support and modern theming ✨
✨ Features
Core
- GitHub Flavored Markdown with tables, footnotes, code blocks
- YAML front matter with custom fields and layout override
- Draft support via
draft: truein front matter - Automatic asset copying and directory structure preservation
- Site configuration via
site.toml
Theming & i18n
- Light/dark mode with OS detection and manual toggle
- Language detection from
file.lang.mdpattern - Supported languages: en, it, es, fr, de, pt, ja, zh, ru, ar
- Tera-based templating with responsive design
Advanced
- Development server with live reload and file watching
- RFC 4287 compliant Atom feeds with xml:base support
- Table of contents generation with
toc: true - Bidirectional footnote navigation with smooth scrolling
- Smart scroll-to-top button and theme-aware syntax highlighting
📦 Installation
From Source
The executable will be available at target/release/kk.
Global Install
Copy themes from the repository to your site root:
🔧 Usage
Basic Usage
Generate a site from the current directory:
Development Server
Features: Live reload, file watching, multi-interface binding, network discovery
Production Build
Options
-i, --input <DIR>: Input directory (default:content)-o, --output <DIR>: Output directory (default:_site)-t, --theme <DIR>: Theme directory (default:themes/default)-p, --port <PORT>: Server port (default:3000)--no-live-reload: Disable live reload functionality (server subcommand only)
📁 Content Organization
Directory Structure
content/
├── site.toml # Site configuration (not copied to output)
├── posts/ # Blog posts (uses 'post' template)
│ ├── sample.md
│ ├── sample.it.md # Italian translation
│ └── time-series.md
├── pages/ # Static pages (uses 'page' template)
│ └── about.md
├── images/ # Static files (copied as-is)
│ └── logo.png
└── any-file.md # Root level files (uses 'page' template)
Site Configuration
= "My Blog"
= "https://example.com" # Optional, for feeds
Front Matter
Add metadata to your markdown files using YAML front matter:
---
title: "My Blog Post"
date:
layout: post
tags:
toc: true
draft: false # Set to true to skip processing
---
# Your content here
Fields: title, date, draft, layout, tags, toc
Theme System
Tera-based templates with light/dark mode auto-detection and manual toggle. Templates automatically chosen based on directory (posts/ → post template, pages/ → page template). Override with layout field in front matter.
Development
License
MIT License