Typed collections
pliego-content discovers bounded Markdown, JSON, and TOML inputs, parses them into application types, and preserves stable source identities for diagnostics and build evidence.
rust
#[derive(serde::Deserialize)]
struct Article {
title: String,
summary: String,
published: String,
}
let articles = collection.load::<Article>()?;Safe Markdown
CommonMark rendering escapes raw HTML by default, limits input bytes and nesting, and reports the source path with the failing field. Content is data, not an executable template language.
Bound every input
- Files
- Maximum discovered entries and portable relative paths
- Bytes
- Per-file and collection-wide byte ceilings
- Shape
- deny_unknown_fields for public content contracts
- Identity
- Stable path and content digest in diagnostics
Actionable content errors
text
PLG-CNT-004 content contract
content/articles/launch.toml: unknown field `titel`
Expected: title, summary, published
Next: correct the field and save; pliego dev will rebuild.