Features

This page describes what’s currently implemented in dodeca (as shipped in this repository). Some features depend on helper binaries (ddc-cell-*); if those binaries are missing, the corresponding feature may be unavailable.

Build

  • Incremental builds via picante - only rebuild what changed
  • Sass/SCSS compilation - modern CSS workflow built-in
  • Link checking - validate internal and external links

Runtime

  • Live reload dev server - rebuilds on change and notifies the browser
  • DOM patching - can update pages without a full reload (when live reload is enabled)

Assets

  • Font subsetting - include only glyphs used by your site
  • Responsive images - generate multiple sizes and modern formats (e.g. WebP/JXL)

Templating

  • Jinja-like template engine - blocks, inheritance, loops, filters, and diagnostics

Diagrams

  • ASCII diagrams - render plain text diagrams as SVG using aasvg

Code Sample Execution

  • Rust code blocks can be executed during the build (if ddc-cell-code-execution is available)
  • ddc build fails on execution errors; ddc serve reports them as warnings
  • Code execution is opt-in: add ,test to a fenced Rust code block to execute it

Rust Code Validation

Add ,test to have a code block executed and validated:

rust
fn main() {
    use std::collections::HashMap;
    let mut scores = HashMap::new();
    scores.insert("Alice", 10);
    scores.insert("Bob", 8);

    for (name, score) in &scores {
        println!("{name}: {score}");
    }
}

Auto-wrapped Code

Code without a main function is automatically wrapped:

rust
let message = "Hello, world!";
println!("{}", message);

Error Reporting

When code fails, you get detailed feedback:

✗ Code execution failed in content/guide/example.md:25 (rust): Process exited with code: Some(1)
  stderr: error[E0425]: cannot find value `undefined_var` in this scope

See the Code Execution Guide for complete documentation.