The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Beamer+ is a local, browser-based presentation tool for interactive lectures. It renders PDF slide decks (e.g. LaTeX Beamer output) and layers live features on top: pen and highlighter annotations (draw and hold to snap a shape), embedded video / audio / 3D models, interactive widgets (calculators, plotters, Python REPLs, maps, …), and real-time audience surveys with AI-powered response summarization.
Everything runs from a single Flask server — on your machine for solo use, or
hosted by your university for multiple concurrent lectures. Each presenter
creates a session and works at /s/{code}/; audience survey QR codes
point to URLs under that same session prefix.
Requires Python 3.10+.
pip install -r requirements.txt
python launch.py # production launcher: HTTPS with a self-signed cert
Open the https://... URL the launcher prints, then New Session on the
welcome screen (or Try Demo; or go directly to /s/{code}/ if you
already have a code). Browsers warn about the
self-signed certificate — click Advanced → Proceed. HTTPS is needed so
camera/microphone widgets work on LAN addresses.
For development there is a lighter entry point:
python app.py # ad-hoc HTTPS cert (needs `cryptography`)
python app.py --http # plain HTTP (camera widget disabled on LAN)
To try the built-in demo presentation (with a guided tour), click Try Demo on the welcome screen.
A new session starts with the Open window (see below); you can also drag a file onto the window. Either way, load:
presentation.zip
├── slides.pdf # required — the slide deck
├── config/
│ ├── slide-order.json # slide sequence: pdf pages, blank slides, split views, hidden flags
│ ├── s<N>.json # per-slide config: embedded videos/audio/models/widgets + layout
│ ├── annotations.json # saved pen strokes per slide
│ └── widget-states.json # widget state snapshots so widgets resume where they left off
└── assets/ video/ models/ … # media referenced by the configs
An ai/ folder in a ZIP (older decks may have one) is ignored: opening a
deck never runs code from it. Summarizer models live on the server (see
Custom models).
Save (see below) can write two files, plus any screen recordings:
static/vendor/fonts, the TTF form of
the subset in fonts-cm.css; fontkit embeds them) and the widgets' palette.The welcome screen offers New Session (the Open window comes up, and stays until a presentation is open) and Try Demo (the demo presentation with a guided tour).
Two buttons top-right run the session: Edit (once a presentation is open) and Close Session, which asks whether to save first, then goes back to the start page.
Open and Save work like a file manager, each on a folder you choose once: the folder you open presentations from, and the folder you save them in (your course folder for both, say, or two different ones; the first time, Save offers Use as a one-click choice). Both are remembered across sessions, along with the subfolder you were last in; after the browser restarts it asks once to allow each again (Chrome's Allow on every visit skips that). Beamer+ doesn't impose a layout: you choose where things go. Change folder… picks another. Underneath, Or upload from somewhere else instead (Open) is the system file picker, and Or download instead (Save) saves to your browser's downloads folder.
.zip / .pdf files in the one you're
in; click one to open it. Dropping a file on the window opens one too.<name>.zip: the presentation, which reopens at the slide you were on<name>.pdf: the notes PDF (so don't name it after a slides PDF in the same
folder, or the notes replace it)<name>-<yyyy-mm-dd>-<hh-mm>[-part<n>].mp4 (or .webm): recordings not
saved yetChoosing a folder needs the File System Access API (Chrome, Edge). In other browsers Open is the file picker and Save downloads.
tests/browser/flow_sessions.py walks through all of this.
This is the beginning of the README. Read the rest at the original. Read the full README ↗