Skip to main content

Presentation Generator

Turn your README into a presentation. No PowerPoint. No Canva. No subscriptions.

A Python script that converts any README.md into a themeable HTML slide presentation. Zero dependencies. Python standard library only. One file does everything.

Clone on GitHub

Quick Start

# Clone the repo
git clone https://github.com/Jjohnston70/presentation-generator.git
cd presentation-generator

# Generate presentation from your README
python generate_presentation.py README.md presentation.html

# Open in browser
open presentation.html  # or xdg-open on Linux

What It Does

Parses README.md

Extracts title, features, tech stack, installation steps, and sections automatically. Standard README structure becomes structured slides.

Generates HTML Slides

One file output. No build step. Opens in any browser. Works offline. Self-contained with all CSS and JS inline.

40+ Theme Combinations

Mix and match backgrounds (11), accent colors (11), card styles (8), and font colors (8). Theme panel built-in. Preferences save to localStorage.

Works Everywhere

Keyboard navigation (arrows, space, ESC). Touch/swipe for mobile. No CDN dependencies. No accounts. No internet required to present.

module-files.md

Module Contents

File Purpose
generate_presentation.py The generator script (1700 lines, zero dependencies)
README.md Usage documentation and tradeoffs
ARCHITECTURE.md How the code works and where to modify
FAILURES.md What breaks and why (debug guide)
examples/ Sample README and generated output

Tradeoffs

What it does well

  • Fast iteration (change README, regenerate, refresh)
  • No vendor lock-in
  • Works on any machine with Python
  • Self-contained output

What it doesn't do

  • No speaker notes
  • No animations beyond transitions
  • No collaborative editing
  • No PDF export (use browser print)

When to Use Something Else

Fork It

This is meant to be modified. Common customizations:

  1. Add your logo: Edit get_template_head(), add an image
  2. Change default theme: Modify CSS variables in :root
  3. Add slide types: Create new render_slide() conditions
  4. Parse different formats: Modify regex patterns in parse_readme()
← Back to Dropouts