The Peitho Feature Tour

Content stays Markdown, design stays CSS

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

Everything the build catches

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

One contract, end to end

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 }

Build, present, publish

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/

The presenter view keeps you honest

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

Now write your own