Project 29: Markdown-to-Slide Tool
40 min read
Markdown ParsingSlide PresentationsBroadcastChannelKeyboard NavigationCSS TransitionsAuto-Layout
📋 Project Brief
Build a Markdown-to-slide presentation tool that converts a single Markdown file into an interactive slideshow with transitions, speaker notes, and keyboard navigation.
✅ Feature Requirements
Feature 1: Slide Parsing
Acceptance Criteria:
- Slides are separated by
---(horizontal rule) in Markdown - Each slide supports: headings, bullet points, images, and code blocks
- Nested slides (vertical) separated by
=== - Speaker notes defined by
Note:prefix (hidden from audience view)
Feature 2: Keyboard Navigation
Acceptance Criteria:
- → or Space: next slide
- ←: previous slide
- ↓: next vertical slide
- ↑: previous vertical slide
- F: toggle fullscreen
- S: open speaker notes window
Feature 3: Speaker Notes Pane
Acceptance Criteria:
- Pressing S opens a separate window showing: current slide, next slide preview, speaker notes, and elapsed time
- The notes window stays in sync with the main presentation
- Uses
window.open+BroadcastChannelfor cross-window communication
Feature 4: Transitions
Acceptance Criteria:
- Default transition: fade (300ms)
- Optional: slide-left, slide-right, zoom
- Transitions configurable per-slide via metadata:
Feature 5: Auto-Layout
Acceptance Criteria:
- Content auto-fits to the slide dimensions (no overflow/scrolling)
- Font size scales based on content length
- Images scale proportionally within the slide area
- Code blocks use a smaller font and horizontal scroll if needed
🧪 Testing Checklist
- Unit test Markdown-to-slides parser (correct slide splitting, note extraction)
- Unit test keyboard navigation state machine
- Integration test: loading a Markdown file renders the correct number of slides
- Test speaker notes window synchronization
- A11y: slides navigable by keyboard; content readable by screen readers