https://github.com/nrdxp/sukr
Minimal static site compiler — suckless, Rust, zero JS.
https://github.com/nrdxp/sukr
no-javascript no-js static-site-generator static-website
Last synced: 17 days ago
JSON representation
Minimal static site compiler — suckless, Rust, zero JS.
- Host: GitHub
- URL: https://github.com/nrdxp/sukr
- Owner: nrdxp
- License: mit
- Created: 2026-02-01T01:07:37.000Z (23 days ago)
- Default Branch: master
- Last Pushed: 2026-02-01T05:24:48.000Z (23 days ago)
- Last Synced: 2026-02-01T13:34:36.413Z (23 days ago)
- Topics: no-javascript, no-js, static-site-generator, static-website
- Language: Rust
- Homepage: https://sukr.io
- Size: 13.6 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
- my-awesome-github-stars - nrdxp/sukr - Minimal static site compiler — suckless, Rust, zero JS. (Rust)
README
# sukr
**Minimal static site compiler — suckless, Rust, zero JS.**
sukr transforms Markdown content into high-performance static HTML. No bloated runtimes, no client-side JavaScript, just clean output.
## Why sukr?
Most static site generators punt rich content to the browser. sukr doesn't.
- **Tree-sitter syntax highlighting** — Proper parsing, not regex. Supports language injection (Nix shells, HTML scripts).
- **Build-time math** — KaTeX renders LaTeX to static HTML. No 300KB JavaScript bundle.
- **Build-time diagrams** — Mermaid compiles to inline SVG. Diagrams load instantly.
## Features
- **Syntax highlighting** — Tree-sitter with language injection (Nix→Bash, HTML→JS/CSS)
- **Math rendering** — LaTeX to HTML via KaTeX at build time
- **Mermaid diagrams** — Rendered to inline SVG, no client JS
- **Tera templates** — Customize without recompiling
- **Hierarchical navigation** — Nested sections with table of contents
- **Atom feeds** — Auto-generated for blog sections
- **Sitemap** — SEO-ready XML sitemap
- **CSS minification** — LightningCSS optimization
- **Monorepo support** — Multiple sites via `-c` flag
## Comparison
| Feature | sukr | Zola | Hugo | Eleventy |
| :------------------ | :---------: | :-----: | :----: | :------: |
| Syntax Highlighting | Tree-sitter | syntect | Chroma | Plugins |
| Build-time Math | ✅ | ❌ | ❌ | Plugin |
| Build-time Diagrams | ✅ | ❌ | ❌ | Plugin |
| Zero JS Output | ✅ | ❌ | ❌ | Optional |
| Single Binary | ✅ | ✅ | ✅ | ❌ |
See the [full comparison](https://sukr.io/comparison.html) for details.
## Quick Start
```bash
# Build
cargo build --release
# Run (uses ./site.toml)
sukr
# Custom config (monorepo)
sukr -c docs/site.toml
```
## Configuration
Create `site.toml`:
```toml
title = "My Site"
author = "Your Name"
base_url = "https://example.com"
[paths] # All optional, defaults shown
content = "content"
output = "public"
static = "static"
templates = "templates"
[nav] # Optional
nested = false # Show section children in nav
toc = false # Enable table of contents
```
## Content Structure
```
content/
├── _index.md # Homepage
├── getting-started.md # Page → /getting-started.html
├── configuration.md # Page → /configuration.html
└── features/
├── _index.md # Section index → /features/index.html
└── templates.md # Page → /features/templates.html
...
```
## Documentation
Full documentation at [sukr.io](https://sukr.io) (built with sukr).
## Security
sukr processes content at **build time only** — there is no runtime attack surface.
**Trust Model:**
- **Untrusted:** Markdown content, frontmatter, third-party templates
- **Trusted:** The compiled sukr binary, Tree-sitter grammars
**Security Implications:**
- Raw HTML in Markdown is passed through (CommonMark spec). If your content comes from untrusted sources, review it before building.
- URLs in links and images are escaped to prevent attribute injection.
- Templates use Tera's auto-escaping for variables; `{{ content | safe }}` is used intentionally for pre-rendered HTML.
For deployment-time security (CSP headers, etc.), see the [Security docs](https://sukr.io/security.html).
## License
MIT