This deck uses four layouts and one theme — plain HTML and CSS living next to the deck. Swap the whole look by pointing at another directory; the gallery at peitho.gosu.ke does exactly that.
Write slides without thinking about design
no font-size fiddling
no pixel nudging
Review decks as diffs, like any other code
A slot with too much or too little content
Content the layout has no slot for
A code block in a deck whose layout forbids code
A keyed CSS override pointing at a key that no longer exists
An unknown syntax-highlighting language tag
The Rust domain types are the single source of truth; this deck's own manifest.json is emitted from them.
pub struct ManifestSection {
name: String,
start_index: usize,
end_index: usize,
planned_duration_ms: u64,
}
{ "name": "Basics", "startIndex": 0, "endIndex": 1, "plannedDurationMs": 120000 }
Three commands cover the whole life cycle. No runtime JS in the distributed slides.
peitho build deck.md --watch peitho present deck.md peitho publish -- aws s3 sync dist/ s3://your-bucket/
Planned time lives in the deck itself; sections mark milestones; actuals accumulate as you speak.
time: 8m in this deck's frontmatter is the budget
Section markers split it: Basics, Contracts, Presenting
Speaker notes are plain HTML comments — this slide has one