Quillmark
A format-first Markdown rendering system that converts Markdown with card-yaml metadata blocks into PDF, SVG, PNG, and other output formats.
Maintained by quillmark-org.
UNDER DEVELOPMENT — APIs may change.
Features
- Format-driven: Quills define structure and styling; Markdown provides content.
- Schema-backed validation: typed coercion, defaults, and constraints via
QuillConfig. - Typst backend: produces PDF, SVG, and PNG.
- Structured diagnostics: path-aware errors and warnings.
Documentation
- User Guide - Tutorials, concepts, and bindings
- Rust API Reference - Rust crate docs
- Changelog - Release notes and version history (GitHub Releases)
Installation
Quick Start (Rust)
use ;
// A `Quill` is engine-free, validated data.
let quill = quill_from_path?;
let engine = new;
let markdown = r#"~~~
$quill: my_quill
$kind: main
title: Example
~~~
# Hello World
"#;
let doc = from_markdown?;
let result = engine.render?;
let pdf_bytes = &result.artifacts.bytes;
Examples
Project Structure
- crates/core - Core parsing, schema, and backend traits
- crates/quillmark - Rust orchestration API
- crates/backends/typst - Typst backend
- crates/bindings/python - Python bindings
- crates/bindings/wasm - WebAssembly bindings
- crates/bindings/cli - Command-line interface
- crates/fixtures - Test fixtures and sample Quill templates
- crates/fuzz - Property-based fuzzing tests
- prose/canon - Design documentation
Contributing
See CONTRIBUTING.md.
License
Licensed under the Apache License, Version 2.0. See LICENSE.