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-executionis available) ddc buildfails on execution errors;ddc servereports them as warnings- Code execution is opt-in: add
,testto 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.