https://github.com/bearcove/dodeca
A salsa-infused static site generator
https://github.com/bearcove/dodeca
rust server ssg template website
Last synced: 5 days ago
JSON representation
A salsa-infused static site generator
- Host: GitHub
- URL: https://github.com/bearcove/dodeca
- Owner: bearcove
- License: apache-2.0
- Created: 2025-12-01T15:21:29.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-01-06T22:59:59.000Z (16 days ago)
- Last Synced: 2026-01-08T13:11:29.162Z (15 days ago)
- Topics: rust, server, ssg, template, website
- Language: Rust
- Homepage: https://dodeca.bearcove.eu/
- Size: 6.81 MB
- Stars: 157
- Watchers: 3
- Forks: 7
- Open Issues: 30
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# dodeca
[](./LICENSE-MIT)
[](https://crates.io/crates/salsa)
A fully incremental static site generator.
## Philosophy
**Dev mode = Production mode.** Unlike other static site generators that take shortcuts
in development (skipping minification, using original asset paths, etc.), dodeca serves
exactly what you'll get in production: cache-busted URLs, minified HTML, subsetted fonts,
responsive images—the works. Even font subsetting runs in dev!
This is possible because dodeca uses picante for incremental computation. Every
transformation is a cached query. Change a file and only the affected queries re-run.
First page load builds what's needed; subsequent requests are instant.
**Custom template engine.** Dodeca includes its own Jinja-like template engine. This gives
you the power of a real language (conditionals, loops, variable interpolation) without
the complexity of learning a new syntax. The engine includes rich diagnostics with
line/column information for template errors.
**Plugin architecture.** Dodeca's plugin system (via the `plugcard` crate) allows extending
the build pipeline without modifying the core. Image optimization, CSS processing, syntax
highlighting, and more can be plugged in independently.
## Getting Started
Install dodeca:
```bash
cargo install dodeca
```
Create a new site:
```bash
ddc init my-site
cd my-site
ddc serve
```
This starts a development server at `http://localhost:8080` with live reload.
## Key Features
- **Incremental builds**: Only affected files are re-processed on changes
- **Cache-busted URLs**: Assets get unique names based on content hash
- **Image optimization**: Built-in image processing with responsive variants
- **Font subsetting**: Automatically subset fonts to used characters
- **HTML minification**: Minify HTML in production builds
- **Template engine**: Powerful, easy-to-learn Jinja-like templates
- **Code execution**: Execute code samples and capture output
- **Link checking**: Verify all links in your site
- **Extensible**: Plugin system for custom transformations
## Structure
The dodeca workspace includes:
- **dodeca**: Main SSG binary (`ddc` CLI)
- **gingembre**: Template engine with rich diagnostics
- **plugcard**: Plugin system for extending the build pipeline
- **dodeca-\***: Individual plugins for various transformations
- **livereload-client**: WASM client for live reload in development
## Development
Build everything:
```bash
cargo xtask build
```
Run tests:
```bash
cargo test --workspace
```
Build the documentation:
```bash
cargo doc --workspace --no-deps --open
```
## Contributing
Contributions are welcome! Please open issues and pull requests on GitHub.
## Sponsors
Thanks to all individual sponsors:

...along with corporate sponsors:



...without whom this work could not exist.
## License
Licensed under either of:
- Apache License, Version 2.0 ([LICENSE-APACHE](./LICENSE-APACHE) or )
- MIT license ([LICENSE-MIT](./LICENSE-MIT) or )
at your option.